Пацей 4 сем / Лекции / СТПI_5_Unit_тестирование
.pdf►Тесты (tests) – методы, непосредственно выполняющие проверку («тестовые методы»).
@Test
void testExample1()
{
}
public — всё c Junit 5
► Тесты, проверяющие исключения
@Test(expected=ArithmeticException.class) voidtestExample2()
{
}
►Тесты с таймаутом
тестовый метод должен выполнился за некоторое время
@Test(timeout=2000) public void testExample3()
{
}
►Игнорирование тестового метода
@Ignore() тестовый метод выполнять не нужно
@Test
void testExample4()
{
}
Параметризованные тесты
@RunWith(value = Parameterized.class)
class TestData{
запуск будет параметризованным
@Parameters
Данные для параметризации
}
►Параметризованные тесты JUnit 5
@ParameterizedTest
@ValueSource(strings = { "Hello", "World" }) void testWithStringParameter(String argument) {
|
assertNotNull(argument); |
|
данные примитивных |
} |
типов: int, long, double, String. |
@CsvSource({ "foo, 1", "bar, 2", "'baz, qux', 3" }) @EnumSource(value = TimeUnit.class, names = { "DAYS", "HOURS" })
Наборов тестов
@RunWith(value=Suite.class) @Suite.SuiteClasses(value={testExample1.class,
|
testExample4.class}) |
class _testRunner { |
Указание набора |
} |
Выполнение |
|
набора |
||
|
||
|
1) Тесты выполняются в том порядке, в каком |
|
|
перечислены |
2) В JUnit 4 НЕЛЬЗЯ включить в набор отдельные тестовые методы, как в JUnit 3.
Проверки в JUnit
►Проверки (assertions) – специальные методы, выполнение которых может закончиться успешно (проверка прошла) или не успешно (проверка не прошла).
1) Остановка теста
@Test
voidtestExample1()
{
fail(); fail("Stop!");
}
проверка, которая всегда заканчивается неудачей.
Метод генерирует ошибку выполнения теста (завершает тест ошибкой) с выводом сообщения или без вывода.
используется как «заглушка» для тестов, логика которых ещё не реализована
2) Сравнение
assertEquals() сравнивает два значения
assertEquals(4.0, 2.0*2.0, 0.0001);
assertEquals(4, 2*2);
Проверка считается пройденной, если значения равны
3) Истинность и ложность
assertTrue() проверяет, является ли переданный аргумент логически равным true.
boolean some_bool_var = 3<5; assertTrue(some_bool_var); assertTrue(2*2 == 4);
assertTrue( 2*2 == 4,"Math error!");
assertFalse() проверяет, является ли переданный аргумент логически равным false.
boolean some_bool_var = 3<5; assertFalse(some_bool_var); assertFalse(2 * 3 == 4); assertFalse(2 * 3 == 4,"Math OK!");
}
4) Отсутствие и наличие
assertNull() проверяет, является ли переданный аргумент логически равным null
testobj = null; assertNull(testobj);
assertNull( testobj, "Self-created obj?");
assertNotNull() проверяет, является ли переданный аргумент логически НЕ равным null.
assertNotNull(testobj);
assertNotNull( testobj,"Creation failed!?");
5) Сравнение объектов
assertSame() проверяет, ссылаются ли переданные аргументы на один и тот же объект
assertSame(obj1, obj2);
assertSame (obj1, obj2, "Different!");
assertNotSame() проверяет, ссылаются ли переданные аргументы на разные объекты.
assertNotSame(obj1, obj2); assertNotSame(obj1, obj2, "The same!" );
6) Сравнение массивов
assertArrayEquals() проверяет, являются ли массивы идентичными.
assertArrayEquals(int_arr1, int_arr2); assertArrayEquals( sa1, sa2,"NO!");
JUnit 5
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
►7) Сравнение группы, строк
@Test
@DisplayName("Check all assert") void GroupTest(){
Assertions.assertAll("all assertion",
() -> assertThat("JUNIT", startsWith("J")), () -> assertThat("JUNIT", endsWith("T")));
Assertions.assertLinesMatch(List.of("1","2"),List.of("1","2"));
}}