julia_v_iluhina

Untitled

Sep 22nd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.79 KB | None | 0 0
  1. public class TodoMvcPage {
  2.  
  3.     private ElementsCollection tasks = $$("#todo-list>li");
  4.     private SelenideElement newTaskInput =  $("#new-todo");
  5.  
  6. /*
  7.     я бы не стала скрывать эти переменные как private
  8.     возможно - кому-то в тест-методе понадобится с ними поработать
  9.     так почему нет?
  10.  
  11.     советую объявить как public
  12.  
  13.     в целом, когда размышляешь над модификаторами доступа - логика такая
  14.     если это (переменная или метод)  - суть что-то служебное
  15.     или имеет некую специфическую логику в использовании
  16.     или вообще нежелательно такое отдавать наружу класса - тогда
  17.     прячем = private
  18.  
  19.     иначе - смысла прятать нету
  20.     мы разрабатывая пейдж - естественно все варианты не предуспотрим
  21.     и вот захочется кому-то что-то у таски проверить
  22.     если у нас переменная  tasks будет private - этому кому-то придется
  23.     поработать больше)
  24.  
  25. */
  26. *******************************
  27. public void givenAtAll(GivenHelpers.Task... tasks) {
  28. public void givenAtActive(GivenHelpers.Task... tasks) {
  29. public void givenAtCompleted(GivenHelpers.Task... tasks) {
  30. /*
  31.     я бы и гивен-методы аннотировала как Step
  32.  
  33.     а вот насчет того - надо ли так аннотировать проверки...
  34.     вопрос неоднозначный
  35.  
  36.     если важно в отчете их видеть - да, нужно аннтоировать
  37.     а если в отчете не хочется отвлекаться на проверки - тогда не надо)
  38.  
  39.     зависит от потребностей / целей
  40. */
  41. ***************************************
  42.  
  43.     @Step
  44.     public void cancelEdit(String oldTaskText, String newTaskText) {
  45.         setNewTaskText(oldTaskText, newTaskText).pressEscape();
  46.     }
  47. /*
  48.     не по теме этого ревью
  49.     но раз уж за @Step заговорили
  50.  
  51.     если бы в тест-методе использовалась строчка setNewTaskText(oldTaskText, newTaskText).pressEscape();
  52.     и сам метод setNewTaskText был аннотирован @Step
  53.     то в отчете бы отразилось setNewTaskText(oldTaskText, newTaskText)
  54.     а вот то, что после точки - нет
  55.  
  56.     потому - хороший выход - делать как ты
  57.     реализовать специальный метод и его использовать
  58. */
  59. *******************************
  60. private SelenideElement setNewTaskText(String oldTaskText, String newTaskText) {
  61. /*
  62.     из описанных выше соображений - не стала бы делать метод private
  63.  
  64.     я могу представить ситуации - когда он будет нужен
  65. */
  66. **********************
  67. Не уверенна, что правильно поступила с переименованием тестовых методов
  68. /*
  69.     ты знаешь, а неплохо)
  70.     лаконично и точно
  71.  
  72.     но это нас спасает то, что мы вызываем методы пейджа как
  73.     указывай пейдж.метод(...)
  74.  
  75.     всегда четко ясно - где какой метод (есть же одноименные)
  76.     интересно, как в следующей работе это решишь)
  77. */
  78. ************************************
  79. /*
  80.     это пока просто к сведению
  81.     потом - когда будем делать работы в отдельных репозиториях - потренируешься
  82.     пока оставь текущую структуру проекта
  83. */
  84. /*
  85.     http://joxi.ru/nAyqEx7HXvxQoA
  86.    
  87.     вот пример хорошей структуры проекта
  88.    
  89.     в src \ main
  90.    
  91.       core - универсальное, что можно переиспользовать в разных проектах
  92.       pages - пейджи тоже можно переиспользовать для других тестов этого же приложения
  93.    
  94.    
  95.     в src \ test
  96.    
  97.       testdata - тестовые данные (если такие есть и они вынесены в отдельный класс)
  98.       testconfigs - предки тест-класса (так можно их изолировать от  собственно тест-классов - чтоб легче было ориентироваться
  99.    
  100.    
  101.     про пекеджи еще немного)
  102.     если GroupID = com.somesite
  103.     а проект todomvctest
  104.     то пакет корневой должен быть com.somesite.todomvctest
  105.    
  106.     логика  - чтобы "не смешивались имена сущностей"
  107.    
  108.     внутри одной компании - может быть несколько проектов)
  109.     и у всех у них один com.somesite  - базовый пекедж
  110.     но для каждого проекта должен быть свой  “базовый пекедж проекта"
  111.     иначе все смешается)
  112.     важно то, что когда этот проект выльется в отдельную библиотеку,
  113.     то не будет конфликтов при его подключении
  114. */
Advertisement
Add Comment
Please, Sign In to add comment