如何在每个@Test之前运行@BeforeClass方法

时间:2018-12-11 14:39:36

标签: java unit-testing mocking powermock easymock

当我手动运行@Tests时,一个接一个-一切都很好。但是当我一起运行它们时-我遇到了错误。因此,如何在每个@Test之前运行@BeforeClass。我无法在我的@BeforeClass中使用@Before becorse,我在测试类构造函数中做了一些工作。

测试类的构造函数:

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 :(得分:3)

使用@Before代替@BeforeClass来执行每次测试之前

@Before
public static void init() throws IOException {
  

with @Before导致该方法在Test方法之前运行。超类的@Before方法将在当前类的方法之前运行。

答案 1 :(得分:0)

如果要在每个测试类之前执行任何方法,则应使用 @Before 批注。通过使用 @BeforeClass 批注,您只需在测试类中调用一次该方法。