单元测试@Parameters

这是一个使用JUnit的Parameterized测试的Java代码。我会为你逐行解释它的含义:
@RunWith(Parameterized.class)

这是JUnit的注解,它告诉JUnit这个测试类应该使用Parameterized运行器。Parameterized运行器使你可以为你的测试方法提供参数,这样你可以用多组数据运行同一个测试方法。
public class String4Test{

这是定义一个名为String4Test的公共类。
@Parameter(value=0)public String x;

这是定义一个公共字符串变量x,并使用@Parameter注解标记它的值为0。这意味着x是参数化测试中的第一个参数。
@Parameter(value=1)public String str;

这是定义一个公共字符串变量str,并使用@Parameter注解标记它的值为1。这意味着str是参数化测试中的第二个参数。
@Parameters

这是告诉JUnit从静态方法中获取参数数据。具体的参数值由后面的方法提供。
public static Collection data(){

这是定义一个公共的静态方法,该方法返回一个对象数组的集合(即二维数组)。这个方法提供了测试所需要的所有参数数据。
return Arrays.asList(new Object[][] {{"ababcd","替换前缀后的字符串为:efabcd"},{"cbaecd", "替换cd后的字符串为:cbaegh"},{"ebcdee","大写字母的字符串为:EBCDEE"}});

这行代码返回一个列表,该列表包含三个对象数组。每个数组有两个元素:第一个元素是要传递给测试方法的输入数据,第二个元素是期望的结果。例如,对于输入"ababcd",期望的结果是"替换前缀后的字符串为:efabcd"。

 
public class String4 {  
    public static String processString(String str) {  
        if (str.startsWith("ab")) {  
            System.out.print( str.replaceFirst("ab", "ef"));
            return "替换前缀后的字符串为:" + str.replaceFirst("ab", "ef");  
        } else if (str.endsWith("cd") && !str.startsWith("ab")) {  
            System.out.print( str.replaceAll("cd", "gh"));
            return "替换cd后的字符串为:" + str.replaceAll("cd", "gh");  
        } else {  
            return "大写字母的字符串为:" + str.toUpperCase();  
        }  
    }  
}

@RunWith(Parameterized.class)//1
public class String4Test{
    @Parameter(value=0)public String x;//2
    @Parameter(value=1)public String str;//3[0,1][1,1]
    @Parameters
    public static Collection data(){//4
        return Arrays.asList(new Object[][] {{"ababcd","替换前缀后的字符串为:efabcd"},{"cbaecd", "替换cd后的字符串为:cbaegh"},{"ebcdee","大写字母的字符串为:EBCDEE"}});
        }
    
    @Test
    public void testChangeStr() {
        String4 string4=new String4();
        assertEquals(str,String4.processString(x));//str怎么就第二个元素,value=1
    }
   
}

 

你可能感兴趣的:(测试,java,服务器,前端)