我有一个JUnit测试类,其每个方法都会根据本地标志变量的值执行不同的操作。并不重要,但如果标志为真,则数据以一种格式保存,如果为false则保存在另一种格式中,使用工厂方法创建基于该标志的DAO对象的实例。我想做的是不要写两组测试,因为我只需要翻转一个开关。
我在Maven中运行它。有没有办法在不同的测试执行之间切换标志的值(使用setter?)时复制这个测试类的执行?
public class BifurcatedTest {
private boolean formatFlag = false;
@Test
public void testGadgetOne(){
Gadget gadg = new Gadget(1, "Gadget One");
GadgetDAO gadgDAO = GadgetAccessFactory.getGadgetDAO(this.formatFlag);
gadgDAO.save(gadg);
assert(true);
}
@Test
public void testGadgetTwo(){
Gadget gadg = new Gadget(2, "Gadget Two");
GadgetDAO gadgDAO = GadgetAccessFactory.getGadgetDAO(this.formatFlag);
gadgDAO.save(gadg);
assert(true);
}
public void setFormatFlag(boolean formatFlag) {
this.formatFlag = formatFlag;
}
}
UPDATE:我知道我可以使用Suite
并通过构造函数注入变量,然后在套件声明中列出两次类。但理想情况下,我想使用类似于
@MultiExec("formatFlag=true;formatFlag=false");
在类声明之前,Maven会理解该注释并多次运行并执行指定的注入。
答案 0 :(得分:1)
我认为您的要求与TestNG中的DataProvider类似。
您可以在JUnit中将其作为Writing Java tests with data providers。