Назад к вопросам
Junior
69
questionbank
Какие аннотации для фикстур существуют в JUnit?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Аннотации для фикстур в JUnit 4 и JUnit 5 отличаются:
JUnit 4:
@BeforeClass: Метод выполняется один раз перед всеми тестовыми методами в классе. Должен быть статическим.@AfterClass: Метод выполняется один раз после всех тестовых методов в классе. Должен быть статическим.@Before: Метод выполняется перед каждым тестовым методом.@After: Метод выполняется после каждого тестового метода.
JUnit 5:
@BeforeAll: Используется для аннотирования методов, которые должны быть выполнены перед всеми тестовыми методами в текущем классе. Аналогично@BeforeClassв JUnit 4, но не требует статического метода, если класс помечен@TestInstance(Lifecycle.PER_CLASS).@AfterAll: Используется для аннотирования методов, которые должны быть выполнены после всех тестовых методов в текущем классе. Аналогично@AfterClassв JUnit 4.@BeforeEach: Используется для аннотирования методов, которые должны быть выполнены перед каждым тестовым методом. Аналогично@Beforeв JUnit 4.@AfterEach: Используется для аннотирования методов, которые должны быть выполнены после каждого тестового метода. Аналогично@Afterв JUnit 4.
Пример использования в JUnit 5:
// Пример использования аннотаций фикстур в JUnit 5
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class FixtureExampleTest {
@BeforeAll
static void setupAll() {
// Код, который выполняется один раз перед всеми тестами
System.out.println("@BeforeAll выполнился");
}
@BeforeEach
void setupEach() {
// Код, который выполняется перед каждым тестом
System.out.println("@BeforeEach выполнился");
}
@Test
void testMethod1() {
System.out.println("Выполняется testMethod1()");
assertTrue(true);
}
@Test
void testMethod2() {
System.out.println("Выполняется testMethod2()");
assertTrue(true);
}
@AfterEach
void cleanupEach() {
// Код, который выполняется после каждого теста
System.out.println("@AfterEach выполнился");
}
@AfterAll
static void cleanupAll() {
// Код, который выполняется один раз после всех тестов
System.out.println("@AfterAll выполнился");
}
}