Порядок выполнения Junit 4 против 5 Junit - PullRequest
0 голосов
/ 16 мая 2018

Я вижу некоторое нежелательное поведение при использовании Junit 5. У меня следующая структура:

website
    config
        BaseTest.java
    tests
        package a
            Test 1
            Test 2
        package b
            Test 3
            Test 4

BaseTest содержит @BeforeAll с некоторой одноразовой настройкой и @BeforeEach и @AfterEach настроить и удалить некоторые данные до и после каждого теста.Каждый тест простирается от BaseTest.

. В Junit 4 я привык к тому, что @BeforeAll в BaseTest запускается только один раз, когда все тесты выполняются сразу во всех пакетах.Однако с Junit 5 кажется, что @BeforeAll повторяется при запуске теста из другого пакета.Чтобы уточнить, я получаю что-то вроде этого:

BeforeAll
    BeforeEach
        Package 1 Test 1
    AfterEach
    BeforeEach
        Package 1 Test 2
    AfterEach
AfterAll
BeforeAll
    BeforeEach
        Package 2 Test 1
    AfterEach
    BeforeEach
        Package 2 Test 2
    AfterEach
AfterAll

Заранее спасибо!С уважением

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Мне удалось это исправить, переопределив BeforeAllCallback и зарегистрировав его на моем BaseTest, вот так:

JunitExtensions.class

import com.codeborne.selenide.Configuration;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;

public class JunitExtensions implements BeforeAllCallback {

    @Override
    public void beforeAll(ExtensionContext extensionContext) throws Exception {
        //Code that needs to be ran before all tests goes here
    }
}

Basetest.java

@ExtendWith(JunitExtensions.class)
public class BaseTest {
        //code goes here
    }
}
0 голосов
/ 18 мая 2018

В Junit 4 я привык к тому, что @BeforeAll в BaseTest запускается только один раз при выполнении всех тестов сразу во всех пакетах.

Это неверно.

Я заново создал ваш пример, используя аннотации JUnit 4, и в результате получается следующее:

BeforeClass
    Before
        Package 1 Test 1
    After
    Before
        Package 1 Test 2
    After
AfterClass
BeforeClass
    Before
        Package 2 Test 1
    After
    Before
        Package 2 Test 2
    After
AfterClass

Таким образом, рассматриваемое поведение идентично в JUnit 4 и JUnit Jupiter.

...