所以现在我正在使用 JUnit 4,在@BeforeClass
方法中我设置了重置用户模式或准备示例数据所需的一切。现在,并不是我不喜欢这种方法,而是我发现它非常令人沮丧,原因如下:
- 我正在使用Parameterized注释来使用不同的输入数据运行相同的测试。参数化不起作用,
@BeforeClass
因为@BeforeClass
使用静态方法。
这意味着如果我想保持@BeforeClass
逻辑,我必须复制测试。我不能使用@After,@Before
因为这些都会在每次测试之后发生,这将是一个开销。
我在想我可以重构这个单元测试,因为我将编写一个处理测试的抽象类,并为我想尝试的每个组参数编写一个子类,这样我就可以只编写一次测试代码。
我希望您可以从以下起点建议一个更简洁的选项:使用@Parameterized
,每个参数组只需要运行一次“数据库”方法。
编辑:
这是我的班级没有 BeforeClass 的一个例子
RunWith(LabelledParameterized.class)
public class TestCreateCampaign extends AbstractTestSubscriberCampaign {
public TestCreateCampaign(String label, String apiKey, String userKey,
int customerId) {
super(label, apiKey, userKey, customerId);
}
@Before
public void setUp() throws Exception {
super.setUp();
}
@After
public void tearDown() throws Exception {
super.tearDown();
}
@Parameters
public static Collection<Object[]> generatedData() {
return DataProvider.generatedCorrectSubscriberData();
}
@Test
public void testCreateEmailCampaignBothTriggered() {
// TEST
}
@Test
public void testCreateTextCampaignTriggered() {
// TEST
}
@Test
public void testCreateTextCampaignTest() {
// TEST
}
// Other Tests
}