Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Junit

Аннотация Описание
@Test Аннотация, указывющая, что метод является тестом.
@Displayname("Название теста") Отображает пользовательское имя теста при запуске.
@RepeatedTest(количество_запусков_теста) Выполнить тест n раз.

Пример:

@Test
@Displayname("Проверка сложения чисел")
void myNewTest() {
    Assertions.assertEquals(5, 5); // Сравнивает значения на равенство
    Assertions.assertEquals(345, Math.addExact(300, 45));    
}

Аннотация Описание
@Timeout(value = количество, unit = TimeUnit.тип_единиц_измерения) Устанавливает время выполнения метода.Если метод будет выполняться дольше заданного времени, то тест провалится.

Пример:

@Test
@Timeout(value = 1, unit = TimeUnit.SECONDS)
public void test1() {
    long currentTime = System.currentTimeMillis();
    while (System.currentTimeMillis() < currentTime + 10000) {

    }
}
// Тест провалится, т.к. установлено времени на выполнение - 1 секунда, а метод выполняется 10 секунд

Тест с параметрами

Аннотация Описание
@ParameterizedTest Тест с параметрами, требует аннотацию, предоставляющую исходные данные.
@ValueSource(тип = {значения через запятую}) Передать значения переменных (int, double, string и т.д.) .

Пример:

@ParameterizedTest
@ValueSource(ints = {4, 621, 265})
public void isPrimeForNotPrimes(int number) {
    Assert.assertFalse(numberWorker.isPrime(number));
}

Аннотация Описание
@MethodSource("Имя метода, генерирующего значения") Параметры предоставляются методом, который их генерирует.

Пример:

public static Stream<Arguments> sourceProvider() {
    return Stream.of(
            arguments(1, "один"),
            arguments(2, "два")
    );
}

@ParameterizedTest
@MethodSource("sourceProvider")
@DisplayName("test: проверка sourceProvider")
public void test(int num, String str) {
    Assertions.assertTrue(str.length() > 0);
    Assertions.assertTrue(num == 1 || num == 2);
}

Аннотация Описание
@CsvFileSource(resources = "/data.csv") Параметры считываются из .csv файла.

Пример:

@ParameterizedTest
@CsvFileSource(resources = "/data.csv")
public void checkSumDigit(int number, int sum) {
    Assert.assertEquals(sum, numberWorker.digitSum(number), 1e-9);
}

@BeforeEach, @BeforeAll, @AfterEach, @AfterAll

@BeforeEach:

  • Используется когда нужно выполнить определенные действия перед каждым тестовым методом.
  • Пример использования: инициализация объектов, открытие ресурсов (например, подключение к базе данных), загрузка данных и другие подготовительные действия.

@BeforeAll:

  • Используется когда нужно выполнить действия перед началом выполнения всех тестов в классе.
  • Пример использования: настройка общих ресурсов, которые могут быть разделяемыми между всеми тестами в классе.

@AfterEach:

  • Используется когда вам нужно выполнить определенные действия после каждого тестового метода.
  • Пример использования: закрытие ресурсов, освобождение памяти, очистка данных после каждого теста.

@AfterAll:

  • Используется когда вам нужно выполнить действия после выполнения всех тестов в классе.
  • Пример использования: закрытие общих ресурсов, завершение подключения к базе данных и другие завершающие действия.

MockMvc

MockMvc - симулирует запросы и получает ответы от контроллеров не запуская веб-сервер.

Конифигурация

Для использования MockMvc на уровне класса нужно использовать конфигурационную аннотацию @WebMvcTest. Позволяет Spring создать экземпляр MockMvc и связать его с контроллерами.

@RunWith(SpringRunner.class)
@WebMvcTest
public class WebLayerTest {

    @Autowired
    private MockMvc mockMvc;
}

Выполнение HTTP-запросов и обработка результатов

Синтаксис: perform(тип_http_запроса(эндпоинт))

GET-запрос:

mockMvc.perform(get("/health/check"));

GET

mockMvc.perform(get("/health/check"));