Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface All {
- }
- /*
- Можно обойтись двумя категориями - buggy & smoke
- для создания 4-ех сьютов
- */
- *******************
- public class ToDoMVCAtAllTest extends BaseTest {
- @Test
- @Category({Smoke.class, All.class})
- public void testEditOnAll() {
- /*
- тут это нам не пригодится)
- но на будущее - можно аннотировать @Category - и тест-класс
- если все тест-методы этого класса - относятся к какой-то одной категории
- http://junit.org/junit4/javadoc/4.12/org/junit/experimental/categories/Categories.html
- */
- **********************************
- @RunWith(Categories.class)
- @Categories.IncludeCategory({Smoke.class, Buggy.class, AllSuiteTest.class})
- @Suite.SuiteClasses({ToDoMVCGeneralTest.class, ToDoMVCAtAllTest.class})
- public class AllSuiteTest {
- }
- /*
- Если не указывать вообще @Categories.IncludeCategory - то в сьют войдут все тесты
- из перечисленных в @Suite.SuiteClasses
- именно поэтому - можно All категорию и не делать
- ты тут,кстати, применяешь AllSuiteTest вместо All )
- это неправильно - надо оперировать категориями в @Categories.IncludeCategory
- не надо тут вообще @Categories.IncludeCategory
- */
- ***********************************
- src / test / java / task9 /
- ...
- public class BaseTest {
- {
- Configuration.browser = "chrome";
- }
- }
- /*
- Предок наших тест-классов - в том же пекедже что и сьюты
- Как минимум, надо бы переместить его к тест-классам
- И еще момент
- Нам нужно было обеспечить возможность запуска тестов в том браузере, который мы задали в командной строке
- Configure ability to specify browser (firefox or chrome) when running tests via mvn
- В видео было про это
- */
- **********************************
- @RunWith(Categories.class)
- @Categories.IncludeCategory(Buggy.class)
- @Suite.SuiteClasses(ToDoMVCAtAllTest.class)
- public class BuggySuiteTest {
- }
- /*
- во все сьюты включай оба тест-класса
- цель - чтобы было проще перенастраивать категории и не думать при этом - нужно ли еще и @Suite.SuiteClasses подправлять
- */
- **********************************
- это уже делать не надо
- для общего развития
- может пригодиться
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.3spslt1vfa35
- **************************************
- kramarenkocourses / src / test / java / task9 / modules / ToDoMVCPage.java
- ...
- public class ToDoMVCPage {
- /*
- пейджи-модули - мы тоже размещаем в пекедже pages
- но в названии класса - не указываем Page
- на всякий случай, привожу пояснения
- может, уже дублирую
- Пейдж-модули удобно называть без слова Page в конце
- потому что если ты будешь использовать несколько пейдж-модулей в одном тесте
- то желательно обращаться к их методам через имя класса пейдж-модуля
- чтобы видеть где с каким пейджом идет работа
- и когда ты будешь писать
- TodoMVCPage.givenAtAll()
- то это явно не так прикольно как
- TodoMVC.givenAtAll()
- правда?
- (так обращаться - важно, когда есть несколько пейджей,
- а если он один - то можно без ущерба для точности -
- заимпортить статически все методы и при вызове - не указывать им класса пейдж-модуля)
- вот это Page в конце - это дань общим conventions (или общепринятым предпочтениям)
- при именовании классов в мире ООП
- ми же тут юзаем подход "Модульного Программирования", потому тут этого "лишнего слова"
- не нужно
- А то, что это все же пейдж - скажет нам имя пекеджа - pages
- */
- *******************
- public static void given(Task... tasks) {
- ensureMainUrl();
- ...
- executeJavaScript("location.reload()");
- }
- /*
- насчет проблем при запуске в хроме
- на самом деле, вопрос к нашему приложению todoMVC )
- У него есть недостаток
- при обновлении или загрузке страницы - сначала загружаются все элементы
- и становятся доступными для работы и только через небольшой промежуток времени - JavaScript-і єтих єлементов догружаются
- и вот если тест начинает работать с элементами до загрузки джаваскриптов - наши элементы ведут себя не правильно
- правильнее всего это исправлять на уровне самого приложения - чтобы элементы были доступны уже после загрузки джаваскриптов
- но - в случае, когда такая опция недоступна - то надо как-то выкручиваться
- можно вот так
- после executeJavaScript("location.reload()");
- проверить размер списка тасок
- он должен совпадать с количеством переданных тасок (в качестве параметра метода)
- this.tasks.shouldHave(size(tasks.length));
- тут мы получили емного загадочный код)
- this.tasks - коллекция элементов на странице
- tasks - параметры метода
- уже не заморачивайся с неймингом - пусть так будет
- но - яркий пример - когда у 2-ух разных понятий одно имя - можно получить неоднозначности
- пока этот костыть не подводил)
- почему мы этого не видели в файрфоксе, но получили в хроме
- все просто)
- хром - пошустрее)
- */
Advertisement
Add Comment
Please, Sign In to add comment