使用不同的实例变量值多次运行单个JUnit测试类

时间:2014-02-24 22:54:46

标签: maven junit maven-surefire-plugin

我有一个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会理解该注释并多次运行并执行指定的注入。

1 个答案:

答案 0 :(得分:1)

我认为您的要求与TestNG中的DataProvider类似。

您可以在JUnit中将其作为Writing Java tests with data providers