使用testng测试接口实现

时间:2016-07-20 08:38:16

标签: java unit-testing testng

TestNG 6.8.8

我有以下界面:

public interface Act1{
    /**
    * Some contract
    */
    public String doAct(String input);
}

及其几个实现

public class Act1Impl1 implements Act1{
   //...
}

public class Act1Impl2 implements Act1{
   //...
}

问题是有些一般合同必须遵循实施,我想在单独的测试类中编写这个常用功能的测试,如下所示:

public class CommonAct1Test{

    @Test
    public void test_Case1(){ 
        Act1 act1; 
        //test act1 case 1
    }

    @Test
    public void test_Case2(){
        Act1 act1; 
        //test act1 case 2
    }

}

这里的问题是,将来可以添加Act1的其他实现。所以,我需要一种方法来轻松地将这些实现添加到测试中。

为什么我认为@DataProvider不适合 ? 因为(据我所知)其主要目的是支持DDT,因此提供不同的数据集来测试单个单元。但在我的情况下,我在同一数据集上测试不同的单位。

我怎么能用TestNG正确地做到这一点。在JUnit我们有@RunWith和参数化测试,如this asnwer

所示

1 个答案:

答案 0 :(得分:1)

您可以通过dataprovider实现此目的,因为您的数据是接口的不同实现。恰好这样而不是实际数据,代码就是你的数据:)。

你可以看看testng Factory - 实现同样的目的,但可能你会得到你想要的感觉 - “在同一数据集上测试不同的单位”