Как запустить метод @BeforeClass перед каждым @Test - PullRequest
0 голосов
/ 11 декабря 2018

Когда я запускаю свои @Tests вручную, один за другим, все в порядке.Но когда я запускаю их все вместе - у меня появляется ошибка.Так как я могу запускать @BeforeClass перед каждым @Test.Я не могу использовать @Before потому что в моем @BeforeClass я работаю над тестированием конструктора класса.

Тестирование конструктора класса:

public HttpUtils() {
    this.httpClient = HttpClients.createDefault();
}

Перед классом:

@BeforeClass
public static void init() throws IOException {
    mockStatic(HttpClients.class);
    final CloseableHttpClient closeableHttpClient = createMock(CloseableHttpClient.class);
    when(HttpClients.createDefault()).thenReturn(closeableHttpClient);
}

Если я запускаю все тесты.Во втором тесте я получил HttpClient не как макет, а как реальный объект, и в последнее время у него есть ошибка.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Если вы хотите выполнить какой-либо метод перед каждым тестовым классом, вы должны перейти к аннотации @ Before .Используя аннотацию @ BeforeClass , вы вызываете этот метод только один раз в тестовом классе.

0 голосов
/ 11 декабря 2018

Используйте @ До вместо @BeforeClass для выполнения перед каждым тестом

@Before
public static void init() throws IOException {

с @Before, что вызывает запуск метода доМетод испытаний.Методы @Before суперклассов будут запускаться раньше, чем методы текущего класса.

...