单元测试@Parameters

发布时间:2024年01月11日

这是一个使用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<Object[]>?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<Object[]> 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
?? ?}
? ?
}

?

文章来源:https://blog.csdn.net/m0_72735063/article/details/135536975
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。