使用理论进行单元测试

来自 JavaDoc

Theories 运行器允许针对无限数据点集的子集测试某个功能。

运行理论

import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;

@RunWith(Theories.class)
public class FixturesTest {

    @Theory
    public void theory(){
        //...some asserts
    }
}

@Theory 注释的方法将被 Theories runner 读作理论。

@DataPoint 注释

@RunWith(Theories.class)
public class FixturesTest {

    @DataPoint
    public static String dataPoint1 = "str1";
    @DataPoint
    public static String dataPoint2 = "str2";
    @DataPoint
    public static int intDataPoint = 2;

    @Theory
    public void theoryMethod(String dataPoint, int intData){
        //...some asserts
    }
}

@DataPoint 注释的每个字段将用作理论中给定类型的方法参数。在上面的示例中,theoryMethod 将使用以下参数运行两次:["str1", 2] , ["str2", 2]

@DataPoints 注释 @RunWith(Theories.class) 公共类 FixturesTest {

    @DataPoints
    public static String[] dataPoints = new String[]{"str1", "str2"};
    @DataPoints
    public static int[] dataPoints = new int[]{1, 2};

    @Theory
    public void theoryMethod(String dataPoint, ){
        //...some asserts
    }
}

@DataPoints 注释注释的数组的每个元素将用作理论中给定类型的方法参数。在上面的例子中,theoryMethod 将使用以下参数运行四次:["str1", 1], ["str2", 1], ["str1", 2], ["str2", 2]