Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void prepareTasks(TaskStatus taskStatus, String... taskTexts) {
- Task[] tasksList = getTasks(taskStatus, taskTexts);
- prepareTasks(tasksList);
- }
- /*
- можно и в одну строчку
- prepareTasks(getTasks(taskStatus, taskTexts));
- tasksList - для массива - не корректное название (т к это не список - это может путать)
- советую переписать в одну строчку)
- */
- ************************************
- public static void prepareTasks(Task... tasks) {
- ...
- String queryToExecute = "localStorage.setItem('todos-troopjs','[";
- /*
- эту переменную можно уже после цикла объявить
- а может и вообще обойдешься без нее)
- посмотришь)
- */
- String taskItem = "";
- /*
- это - не используется
- */
- ...
- jsContent.add("{\"completed\":"
- + task.getTaskStatus().toString()
- /*
- можно просто task.getTaskStatus()
- и даже проще)
- task.taskStatus
- т к поля nested класса - доступны этому классу
- http://stackoverflow.com/questions/1801718/why-can-outer-java-classes-access-inner-class-private-members
- */
- ...
- queryToExecute = queryToExecute + String.join(",", jsContent) + "]')";
- /*
- вот тут я и предлагаю объявить queryToExecute
- а то и вовсе не объявлять
- а просто - передать такое выражение как параметр в executeJavaScript
- */
- System.out.println(queryToExecute);
- /*
- это уже можно убрать
- */
- Selenide.executeJavaScript(queryToExecute);
- Selenide.refresh();
- /*
- используй import static
- чтобы не указывать - Selenide
- в обеих этих строчках
- */
- }
- *******************************
- public class Task {
- public GivenHelpers.TaskStatus taskStatus;
- /*
- тут по идее - видим класс TaskStatus
- можно короче писать
- */
- private String taskText;
- /*
- это уже придирка, конечно)
- не ясно - почему одно поле public,
- а второе - private
- нам по большому счету - все равно
- просто сделай одинаково)
- */
- ...
- public GivenHelpers.TaskStatus getTaskStatus() {
- return taskStatus;
- }
- public void setTaskStatus(GivenHelpers.TaskStatus taskStatus) {
- this.taskStatus = taskStatus;
- }
- public String getTaskText() {
- return taskText;
- }
- public void setTaskText(String taskText) {
- this.taskText = taskText;
- }
- /*
- а вот во всех геттерах и сеттерах - теперь мы не нуждаемся
- внутри GivenHelpers мы и так поля класса Task видим
- а в других местах - такого нам тоже не надо
- */
- }
- *******************************************************************************
- public class ToDoMVC extends GivenHelpers {
- /*
- ойой)
- имя тест-класса - не по конвеншенсам)
- смотри faq
- по поводу вот такого наследования
- наследование применено корректно - если можно сказать
- потомок - это тоже предок
- пробуем)
- ToDoMVC - это тоже GivenHelpers
- ерунда получается)
- GivenHelpers - это класс-контейнер полезных методов
- объяви в GivenHelpers нужные тут методы статическими
- (придется в связи с этим - еще кое-что статическим объявить -
- то, что статические методы используют - IntelIJ Idea тебе подскажет)
- и тут, в тест-классе - просто используй методы и классы из GivenHelpers
- используй import static для всего нужного из GivenHelpers
- и тут, в тест-классе - также сможешь писать
- givenAtActive(TaskStatus.ACTIVE, "1", "2");
- или даже
- givenAtActive(ACTIVE, "1", "2");
- если заимпортишь TaskStatus.ACTIVE
- и еще - поубирай с проекта те классы, что не используются
- (BaseTest & At...Test - раньше ты использовала их как предков для тест-класса
- если не нужны - убирай лишнее)
- */
- ***************************
- public void givenAtAll(Task... tasks) {
- prepareTasks(tasks);
- filterAll();
- }
- /*
- а нужен тут filterAll()? )
- посмотри на первіе строки в prepareTasks
- они уже обеспечивают то - что мы на олле
- второго givenAtAll - тоже касается
- */
- *******************************
- @Test
- public void tasksLifeCycle() {
- prepareTasks();
- ...
- /*
- чтоб уже было единообразно - во всех тест-методах используй given-метод
- */
- *********************************
- @Test
- public void testEditAtAll() {
- //given
- /*
- комментарий - уже мало полезен)
- имя метода - уже говорит само за себя
- */
- givenAtAll(new Task(TaskStatus.ACTIVE, "1"));
- /*
- тут будет лаконичнее такой вызов
- givenAtAll(ACTIVE, "1");
- фактически - тебе понадобится вариант с new Task(...)
- только когда нужно для теста несколько тасок с разными статусами
- */
- **********************************************
- /*
- дальше - иди по тест-плану
- и реализуй с помощью фиче-тестов полное покрытие
- также важно реализовывать различные тестовые ситуации для теста одной фичи
- например для действия ... над таской - у тебя реализовано 3 теста - для каждого из фильтров
- на одном фильтре - поработай с единственной таской
- на втором - со второй из списка
- на третьем - с единственной видимой(есть еще и не видимые)
- получится - что мы учтем в тестах больше нюансов
- проверим разные ситуации - т е лучшее покрытие реализуем
- Optimized full coverage
- оптимизировать полное покрытие - не обязательно
- но можно)
- будешь оптимизировать - приложи линку с тест-планом - чтоб я понимала ход твоих мыслей
- буду смотреть на покрытие и приоритеты
- в чем оптимизация
- - что покрыто в е2е - не покрываем фиче-тестами
- - низкоприоритетное - покрываем единожды, на каком-то из контекстов (пример - delete by emptying text)
- - низкоприоритетные варианты фичи, у которой есть покрытые варианты - не покрываем
- (пример - reopen all & add)
- */
Advertisement
Add Comment
Please, Sign In to add comment