本文主要是介绍Junit入门到掌握-11-JUnit高级-Parameterized参数化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这篇来学习一个新的注解,叫@Parameters, 参数化的意思。什么时候需要用到参数化呢,在selenium中这个例子很好,就是我有一个500个用户数据,我需要重复测试这500个用户的登录功能。我们肯定只需要写一个方法,然后调用这个方法500次,每次方法传入参数不一样,这样应该能够完成这个测试需求。在单元测试中,如果一个方法的用例,采用边界值划分,有时候会产生十几个测试用例,这个时候我们就需要使用参数化。
1.参数化的数据源
一般来说,参数化需要提供数据源数据源可以是数据库表,也可以是excel中一行行记录,也可以是代码中写死的一个列表的数据,或者数组数据。大概过程就是,我们提前准备好这个数据源,例如一个二元数组,里面有5组数据。然后在单元测试用例类中的具体方法,使用参数化注解,告诉Junit,执行这个方法,需要使用外部参数化提供的数据源进行多次测试这个方法。
在Junit中,参数化@Parameters里面写的是一个静态方法。
2.参数化测试举例
这里新建一个测试类,ParameterizedTests.java, 写入下面的代码。
package test;import static org.junit.Assert.assertEquals;import java.util.Arrays;
import java.util.List;import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;import com.anthony.protein.TrackingService;@RunWith(Parameterized.class)
public class ParametrizedTests {private int input;private int expected;private static TrackingService ts = new TrackingService();//构造方法public ParametrizedTests(int input, int expected) {this.input = input;this.expected = expected;}@Parameterspublic static List<Object[]> data() {return Arrays.asList(new Object[][] {{5, 5},{5, 10},{-12, 0},{50, 50},{1, 51}});}@Testpublic void test() {if(input > 0) {ts.addProtein(input);}else {ts.removeProtein(-input);}//断言,期待结果和total是不是相等assertEquals(expected, ts.getTotal());}
}
运行结果
这篇关于Junit入门到掌握-11-JUnit高级-Parameterized参数化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!