【发布时间】:2018-12-11 14:39:36
【问题描述】:
当我手动运行我的@Tests 时,一切都很好。但是当我一起运行它们时 - 我有一个错误。那么如何在每个@Test 之前运行@BeforeClass。我不能在我的@BeforeClass 中使用@Before 因为我在测试类构造函数方面做了一些工作。
测试类构造函数:
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 不像模拟,而是像真实的对象,并且最近出现了错误。
【问题讨论】:
-
@BeforeClass执行一次,通常用于引导一些资源密集型环境,如嵌入式数据库或使用反射 API 的魔力修改类。@Before在每次测试之前执行以在测试之间进行一些清理。我不相信在您的情况下,使用这些生命周期组织代码来完成您想要的工作是不可能的。
标签: java unit-testing mocking powermock easymock