当我手动运行@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不像模拟,而是像真实的对象,并且最近有错误提示。
答案 0 :(得分:3)
使用@Before代替@BeforeClass
来执行每次测试之前
@Before
public static void init() throws IOException {
with @Before导致该方法在Test方法之前运行。超类的@Before方法将在当前类的方法之前运行。
答案 1 :(得分:0)
如果要在每个测试类之前执行任何方法,则应使用 @Before 批注。通过使用 @BeforeClass 批注,您只需在测试类中调用一次该方法。