julia_v_iluhina

Untitled

Dec 13th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.40 KB | None | 0 0
  1. public class GmailSendAndSearchTaskTest {
  2. /*
  3.     С именем тест- класса - перебор)
  4.  
  5.     GmailTest - достаточно
  6.     Task - точно ни при чем
  7.  
  8.     просмотри в faq раздел по неймингу
  9. */
  10.     {
  11.         Configuration.browser = "firefox";
  12.         /*
  13.             firefox - и так по умолчанию запустится
  14.             єто не нужно уточнять
  15.         */
  16.         Configuration.timeout = 20000;
  17.     }
  18. *****************************************
  19.     public static String generateUniqueString(String subject){
  20. /*
  21.         да, ты передаешь текст subject-а
  22.         это так
  23.  
  24.         но когда ты объявляешь и реализуешь метод
  25.         названия должны точно отражать НЕ контекст вызова
  26.         а ДЕТАЛИ  РЕАЛИЗАЦИИ
  27.  
  28.         ты  - здесь и сейчас - используешь метод для  subject-а
  29.         ок
  30.         а завтра другому члену твоей команды понадобится этими же инструментами - работать с другими сущностями
  31.         и если имя метода или его параметров - будет неточным
  32.         то это будет вводить в заблуждение
  33.         в том числе и тебя)
  34.  
  35.         с точки зрения реализации метода - параметр = префикст для UniqueString
  36. */
  37. ************************************************
  38. public class Mails {
  39.  
  40.     public static ElementsCollection mails = ...;
  41.     /*
  42.         да, это идеальный селектор
  43.  
  44.         можно еще чуть улучшить - использовать одинарные кавычки внутри строки-селектора
  45.         тогда ты сможешь обойтись без бекслешей
  46.         что улучшит наглядность
  47.     */
  48.  
  49. **********************
  50.     public static void search(String subject){
  51. /*
  52.     и для поля поиска в gmail - такой же селектор как для такого же поля в google search
  53.     посмотри и сравни
  54.  
  55.     про имя параметра - то же самое
  56.  
  57.     если бы ты реализовала метод
  58.     используя текст запроса - subject:....
  59.  
  60.     а если такая реализация как у тебя - параметр = просто текст запроса
  61.     не обязательно это должен быть subject
  62. */
  63. *******************************************
  64.     public static void assertMail(int index, String subject){
  65. /*
  66.     это уже не надо - System.out.println
  67. */
  68. *************************************************
  69.     public static void assertMail(String subject){
  70. /*
  71.     CollectionCondition.texts - применила верно
  72.     советую посмотреть на реализацию этого кондишена
  73.  
  74.     посмотри - какого типа параметр у этого кондишена
  75.     зажав ctrl - кликни на имени кондишена
  76.  
  77.     увидишь и его реализацию, и параметры
  78.  
  79.      как осуществяется проверка по кондишену texts
  80.                 сверяется количество, порядок и тексты
  81.                     количество элементов коллекции должно быть равно количеству переданных текстов
  82.                     иначе - проверка не прошла
  83.                     и далее - по порядку сверяются текст элемента и переданный текст (на вхождение)
  84.                     нулевой - с нулевым
  85.                     первый с первым
  86.                     и  т д
  87.                 таким образом - уже не нужно проверять размер списка
  88.                 раз уже проверили  через texts
  89.  
  90.      похожая реализация и у кондишена - exactTexts (в этом кондишене - сравниваются тексты на равенство, а так - схема та же)
  91.  
  92.      вспомни - как ты использовала exactTexts для проверки списка тасок
  93.  
  94.      подумай - как переписать свою проверку (уже используя texts)
  95.      чтобы эта проверка проверяла и нашу ситуацию  = в списке один элемент с вот таким текстом
  96.      и чтобы можно было проверить этой же проверкой и список с несколькими тасками
  97. */
  98. **********
  99.     public static void refresh(){
  100. /*
  101.     .asf - достаточно
  102.     остальные уточнения - уже лишние
  103. */
  104. *******************************
  105. /*
  106.  
  107.     Тут это, конечно, немного за уши притянуто
  108.             Просто попробуем разделить функционал на несколько пейджей, чтоб понять,
  109.             как это использовать и как оформлять код, когда используем несколько пейджей
  110.  
  111.             Ниже приведу код, когда используется несколько пейдж модулей
  112.             обрати внимание на
  113.                 названия самих методов
  114.  
  115.                 статик импорт не используем, в коде уточняем имя пейджа -
  116.                 это детализирует смысл вызова
  117.                 и когда методов в каждом из пейджей реально много -
  118.                 такой способ вызова позволяет легче ориентироваться в коде
  119.  
  120.                     Gmail.visit();
  121.  
  122.                     Gmail.logIn(TestData.email, TestData.password);
  123.  
  124.                     Mails.send(TestData.email, subject);
  125.  
  126.                     Menu.refresh();
  127.                     Mails.assertMail(0,subject);
  128.  
  129.                     Menu.goToSent();
  130.                     Mails.assertMail(0,subject);
  131.  
  132.                     Menu.goToInbox();
  133.                     Mails.searchBySubject(subject);
  134.  
  135.                     Mails.assertMails(subject);
  136. */
  137. ************************************
  138. /*
  139.     http://joxi.ru/nAyqEx7HXvxQoA
  140.    
  141.     вот пример хорошей структуры проекта
  142.    
  143.     в src \ main
  144.    
  145.       core - универсальное, что можно переиспользовать в разных проектах
  146.       pages - пейджи тоже можно переиспользовать для других тестов этого же приложения
  147.    
  148.    
  149.     в src \ test
  150.    
  151.       testdata - тестовые данные (если такие есть и они вынесены в отдельный класс)
  152.       testconfigs - предки тест-класса (так можно их изолировать от  собственно тест-классов - чтоб легче было ориентироваться
  153.    
  154.    
  155.     про пекеджи еще немного)
  156.     если GroupID = com.somesite
  157.     а проект todomvctest
  158.     то пакет корневой должен быть com.somesite.todomvctest
  159.    
  160.     логика  - чтобы "не смешивались имена сущностей"
  161.    
  162.     внутри одной компании - может быть несколько проектов)
  163.     и у всех у них один com.somesite  - базовый пекедж
  164.     но для каждого проекта должен быть свой  “базовый пекедж проекта"
  165.     иначе все смешается)
  166.     важно то, что когда этот проект выльется в отдельную библиотеку,
  167.     то не будет конфликтов при его подключении
  168.  
  169. */
Advertisement
Add Comment
Please, Sign In to add comment