Хороший тест
-
простой тест
Андрей Солнцев
Selenide:
Нафига?
Don’t put logic in tests
@Test
public void shouldNavigateToPhotosPage() {
String baseUrl = "http://plus.google.com/";
Navigator nav = new Navigator(baseUrl);
nav.goToPhotosPage();
assertEquals(baseUrl + "/u/0/photos",
nav.getCurrentUrl());
}
http://googletesting.blogspot.com/2014/07/testing-on-toilet-dont-put-logic-in.html
Don’t put logic in tests
@Test
public void shouldNavigateToPhotosPage() {
Navigator nav = new Navigator("http://plus.google.com/");
nav.goToPhotosPage();
assertEquals("http://plus.google.com//u/0/photos",
nav.getCurrentUrl());
}
Упс!
Код
Тест
Общий алгоритм
Частные случаи
C = SQRT(A*A + B*B)
assert hyph(3,4) == 5
assert hyph(5,12) == 13
assert hyph(1,1) == 1.41
assert hyph(0,0) == 0
assert hyph(-1,3) -> error
Тесты
Код
сложный
простые
копипаст
нельзя
копипаст
можно
Тесты - максимально простые!
привносят в тесты ошибки!
А тем более:
Усложнения в тесты
Стоит вносить осознанно
Итак,
чем же хорош Selenide?
Selenide
экономит массу времени
(20%)
(80%)
Пример: Google search
Google search - Page Object
Selenide
новинки
На Jenkins - публичный URL:
build.gradle
2. Методы $.hover(), $.dragAndDrop()
3. Поиск родителей
4. $.uploadFile(File file)
4. $.uploadFile(File … files)
5. sizzle selectors
6. zoom in/out
7. Selenide profiler
Report for userCanReplyToIncomingMessages(ui.BankMessagesSpec)
+----------------------+---------------------------------------------+--------+----------+
|Element |Subject |Status |ms. |
+----------------------+---------------------------------------------+--------+----------+
|open |http://localhost:2070/ |PASSED |4669 |
|open |http://localhost:2070/fakeLogin?username=bob |PASSED |1324 |
|By.linkText: Quicky |click() |PASSED |793 |
|#btn-message-reply |click() |PASSED |1002 |
|By.name: message.text |should be(focused) |PASSED |57 |
|By.name: message.text |should have(text 'long thread') |PASSED |47 |
|By.name: message.text |set value(Hello world!) |PASSED |69 |
|#send-button |click() |PASSED |1051 |
|.alert-success |should be(visible) |PASSED |71 |
+--------------------+-----------------------------------------------+--------+----------+
8. fast set value
mvn -Dselenide.fastSetValue=true
@Before public void setUp() {
Configuration.fastSetValue = true;
}
или
8. fast set value
И тогда $.setValue() использует JavaScript
который гораздо быстрее!
Ты сам можешь выбирать:
Благодарности
Благодарности
Статистика скачиваний
Уникальных IP
Андрей Солнцев
@asolntsev
ru.selenide.org
Спасибо!