++++++++super();
++++++++this.greeting = greeting;
++++}
,
++++@Test
++++public void testParams()
++++{
++++++++System.out.println(greeting);
++++}
//这里的返回值是集合,集合的每一个元素是一维数组,集合的的每一个元素将依次作为测试类构造函数的入参
++++@Parameters
++++public static List<String[]> getParams()
++++{
++++++++return Arrays.asList(new String[][]{++++++++++++++++
{"hello"},
++++++++++++++++++++++++{"hi"},
++++++++++++++++++++++++{"good morning"},
++++++++++++++++++++++++{"how are you"}});
++++}
}
//输出结果:hello、hi、good morning、how are you
在这个用例里,我们首先需要用 @RunWith(Parameterized.class)来修饰我们的测试类;接下
来提供一组参数,还记得 JUnit 的生命周期吗?在每次运行测试方 法的时候都会调用 Constructor 来创建
一个实例,这里参数就是通过 Constructor 的参数传入的。因此如你所见我们需要一个含有参数的构造 函
数用于接收参数,这个参数需要用于跑测试用例所以把它保存做类的变量;然后用@Parameters 修饰我们提
供参数的静态方法,它需要返回 List<Object[]>,List 包含的是参数组,Object[]即按顺序提供的一
组参数。
3.2.4 Category
Category 同样继承自 Suit,Category 似乎是 Suit 的加强版,它和 Suit 一样提供了将若干测试用例类组
织成一组的能力,除此以外它可以对各个测试用例进行分组,使你有机会只选择需要的部分 用例。举个例子
Person 有获取 age 和 name 的方法也有 talk 和 walk 方法,前者用于获取属性后者是 Person 的行为,Category 使
我 们可以只运行属性测试,反之亦然。
首先修改最初的测试用例 PersonTest,添加 Category 信息,代码如下在每个用例上添加了@Category 信
息标识它们是用作 Attribute 还是 Behavior 的测试,这不会影响原有用例测运行。
//...
@Category(AttributeFun.class)
@Test
public void testGetAge()
{
++++int age = person.getAge();
++++assertEquals(3, age);
}
,
@Category(AttributeFun.class)
@Test
public void testGetName()
{
++++String name = person.getName();
++++assertEquals("Willard", name);
}
,
@Category(BehaviorFun.class)
@Test
public void testTalk()
{
++++String message = person.talkTo("Jimy");
++++assertNotNull(message);
}
,