[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-test-kakovy-osnovnye-otlichiya-junit-5-ot-junit-4":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},688,"kakovy-osnovnye-otlichiya-junit-5-ot-junit-4",16,"spring-test","Spring Test","🧪","Каковы основные отличия JUnit 5 от JUnit 4?","JUnit 5 — полностью переписанный фреймворк для тестирования, состоящий из трёх модулей:\n\n- **JUnit Platform** — основа для запуска тестовых фреймворков на JVM.\n- **JUnit Jupiter** — новая модель программирования и расширений для написания тестов.\n- **JUnit Vintage** — обеспечивает обратную совместимость с JUnit 3 и JUnit 4.\n\n### Основные отличия\n\n| Критерий | JUnit 4 | JUnit 5 |\n|---|---|---|\n| Пакет | `org.junit` | `org.junit.jupiter.api` |\n| Аннотация теста | `@Test` (с параметрами `expected`, `timeout`) | `@Test` (без параметров) |\n| Перед каждым тестом | `@Before` | `@BeforeEach` |\n| После каждого теста | `@After` | `@AfterEach` |\n| Перед всеми тестами | `@BeforeClass` | `@BeforeAll` |\n| После всех тестов | `@AfterClass` | `@AfterAll` |\n| Отключение теста | `@Ignore` | `@Disabled` |\n| Расширения | `@RunWith`, `@Rule` | `@ExtendWith` |\n| Минимальная версия Java | Java 5 | Java 8 |\n\n\u003Cdetails>\u003Csummary>Пример кода: JUnit 4 vs JUnit 5\u003C\u002Fsummary>\n\n```java\n\u002F\u002F JUnit 4\nimport org.junit.Test;\nimport org.junit.Before;\nimport static org.junit.Assert.assertEquals;\n\npublic class CalculatorTest {\n    private Calculator calculator;\n\n    @Before\n    public void setUp() {\n        calculator = new Calculator();\n    }\n\n    @Test\n    public void testAdd() {\n        assertEquals(5, calculator.add(2, 3));\n    }\n}\n\n\u002F\u002F JUnit 5\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.BeforeEach;\nimport static org.junit.jupiter.api.Assertions.assertEquals;\n\nclass CalculatorTest {\n    private Calculator calculator;\n\n    @BeforeEach\n    void setUp() {\n        calculator = new Calculator();\n    }\n\n    @Test\n    void testAdd() {\n        assertEquals(5, calculator.add(2, 3));\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\nВ JUnit 5 тестовые классы и методы не обязаны быть `public`.\n\n> **На собеседовании:** интервьюер ожидает знание модульной архитектуры JUnit 5 (Platform \u002F Jupiter \u002F Vintage) и конкретных отличий в аннотациях. Частая ошибка — забыть про `@ExtendWith` как замену `@RunWith` + `@Rule`.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Каковы основные отличия JUnit 5 от JUnit 4? — Gymterview","JUnit 5 — полностью переписанный фреймворк для тестирования, состоящий из трёх модулей:",[7,13],true]