Про тестування
Тестуванням займається кожен розробник. Не все потрібно тестувати.
Ваші тести мають бути:
Перевіреними.
Легко підтримувальними.
Незалежними від середовища виконання.
Легко написаними.
Різновиди тестування
Модульне тестування (Unit testing).
Інтеграційне тестування (Integration testing).
Системне тестування (System Testing).
Unit-тести
Дають змогу перевірити окремі/ізольовані блоки на правильність виконання функціональності. Не потрібно писати модульний тест для кожного блоку/функції, необхідно тестувати лише нетривіальний функціонал на коректність його імплементації. Тобто кожен тест перевіряє на коректність окремий метод/функцію.
Приклад:
public class EmailEditor{
@Autowired
Space mySpace;
public static String appendMySpaceDomain (String str) {
return str + space.getDomain();
}
@Test
public void test_appendMySpaceDomain() {
Assert.assertTrue(myEditor. appendMySpaceDomain
(“dzen”).contains(mySpace.getDomain())));
Integration-тести
Йдуть за модульними тестами.
Групи модулів тестують на їхню взаємодію.
Важливим є результат взаємодії, а не деталі імплементації.
Інтеграційні тести показують що саме не працює, а модульні показують де.
Популярні фреймворки для тестування
Junit.
TestNG.
Hamcrest.
Mockito.
EasyMock.
Конфігурація та залежності
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${ junit.version}</version>
<scope>test</scope>
</dependency>
Приклад:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"file/classpath:…"})
@WebAppConfiguration /*для веб приложения*/
public class MyTestClass{…}
Для вебзастосунку необхідно створити імітацію оточення. З цим нам допоможе Spring:
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
mockMvc допоможе нам здійснювати запити на наші контролери з необхідними нам мапінгами.
Анотації
@RunWith(SpringJUnit4ClassRunner.class) – анотація, яка вказує на те, що клас має використовувати JUnit-можливості, які надає Spring (інтеграція JUnit і Spring).
@ContextConfiguration(location ={…}) – анотація, яка вказує на те, в якому xml-файлі розташована конфігурація контексту вашого застосунку.
@WebAppConfiguration – анотація, яка вказує на те, що завантажуваний контекст для інтеграційних тестів має бути WebApplicationContext.
@Before – анотація, яка вказує на те, що анотований public void метод має бути викликаний перед виконанням тесту. Метод з анотацією @Before батьківського класу буде викликано перед методом з анотацією @Before поточного класу.
@ Test – анотація, яка вказує на те, що анотований public void метод може бути виконаний як тест кейс. Будь-які винятки, породжені методом, сприймаються як провал тест кейса.
@After – анотація, яка вказує на те, що анотований public void метод буде викликаний після виконання тесту. Метод з анотацією @After батьківського класу буде викликаний після методу з анотацією @After поточного класу. Всі методи з анотацією @After будуть гарантовано викликані, навіть якщо методи з анотаціями @Before та @Test породять виняток.
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓5. Unit & Integration testing
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
PRO. 1
Прізвище
Ім'я
По батькові
Стать
Посада
Дата народження
Вивести дані про інженерів, пенсійного віку (чоловікам більше 65-ти років, жінкам 60).
PRO. 2
No поїзда
Пункт і час прибуття
Пункт і час відбуття
Вивести всі відомості про поїзди, час перебування в дорозі яких перевищує 7 годин 20 хвилин.
Обчислити середню вартість усіх комп'ютерів і надрукувати найменування комп'ютерів та їхню середню вартість.
PRO. 3
Прізвище
Ім'я
По батькові
Посада
Зарплата
Дата народження
Вивести відомості про працівників, у яких зарплата вища за середню і вік менше 30-ти років.