Java单元测试技术(9)

protected void runTest() throws Throwable {
......
Method runMethod= null;
try {
runMethod= getClass().getMethod(fName, null);// fName是测试方法名
} catch (NoSuchMethodException e) {
......
}
……
try {
runMethod.invoke(this, new Class[0]);
}
......
}
 类TestSuite
类TestSuite不需要我们再子类化了,它维护了对一组测试用例对象的引用(包括它所包含的嵌套TestSuite对象),它也实现了Test的接口,run方法的实现就是递归调用它所引用的对象的run方法,下面我们谈一下给定一个TestCase子类(指类定义),TestSuite是如何针对其中定义的每个测试方法生成对应的TestCase对象的。以下是TestSuite的两个相关方法,一个是构造方法(给定用例类,生成该测试套下的用例对象)和成员方法(给定用例类,生成子测试套下的用例对象)。
public TestSuite(final Class theClass){ }
public void addTestSuite(Class testClass) { }
这两个方法的实现相似,基本实现思路是根据JAVA的反射技术,找出用例定义的满足以下条件的成员方法(测试方法)
条件1:当然是公共方法
条件2:方法名以“test”开头
条件3:方法无参数
条件4:方法的返回值类型为void
对应每一个这样的方法生成该用例类的一个对象,并将用例名初始化为该方法名。测试套下的用例对象就是这样生成。

你可能感兴趣的:(java)