又一个测试框架: TestNG
TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as:
- JSR 175 Annotations (JDK 1.4 is also supported with JavaDoc annotations).
- Flexible test configuration.
- Default JDK functions for runtime and logging (no dependencies).
- Powerful execution model (no more TestSuite).
在 http://beust.com/testng/main.htm 上可以看到相关的信息。
核心的annotation:
public @interface Configuration {
public boolean beforeTestClass() default false;
public boolean afterTestClass() default false;
public boolean beforeTestMethod() default false;
public boolean afterTestMethod() default false;
public String[] parameters() default {};
public boolean enabled() default true;
public String[] groups() default {};
public String[] dependsOnGroups() default {};
public String[] dependsOnMethods() default {};
}
public @interface Test {
public String[] groups() default {};
public boolean enabled() default true;
public String[] parameters() default {};
public String[] dependsOnGroups() default {};
public String[] dependsOnMethods() default {};
public long timeOut() default 0;
public int invocationCount() default 1;
public int successPercentage() default 100;
}
就我个人而言,我对junit的模式已经相对习惯,因此,这里就对junit与testng的一些特性进行比较:
TestNG | Junit | 比较 |
Unit test的代码使用annotation标注,因此,可以在任何类、方法中编写测试代码,只需要使用annotation标注即可。 | 从TestCase继承的子类,并使用setUp/tierDown,testXXXX的命名模式。 | 虽然TestNG的更为灵活,不够,从项目管理的角度上来看,Junit的做法可能更加有效。 |
支持测试的倚赖关系。当进行一个测试时,需要首先进行其它的测试(一个方法或者一个组) | 不支持 | *** 避免进行一些不必要的测试。能够缩短测试的时间。 |
beforeTestClass | 与TestCase的构造方法相似 | * |
afterTestClass | 没有对应的功能 | * |
beforeTestMethod | setUp | |
afterTestMethod | tierDown | |
测试分组,使用group来定义 | 没有这个概念,但可以把一个TestCase作为一个组 | * |
支持Parameter,这样可以在测试的配置文件中配置测试的参数 | 不支持 | *** |
| | |
从我的角度上来上,由于JUnit确实是足够的简单的了,几乎没有干任何多余的事情,因此,我更倾向于对Junit进行一定的增强。不如说:
1、在JUnit上增加annotatation来描述测试的元信息,提供对测试内容的文档话表述,这样可以产生更好的测试结果、报表。
2、利用annotation来增强测试之间的依赖关系。可以依赖一个方法或者一个test suite。
3、可以通过annotation/factory的方式来增强测试的方法,比如说对超时时间的测试、对执行效率的测试。
或许通过对Junit的增强来得更为容易,一来开发人员学习周期更短,二来可以重用的东西更多,包括eclipse等插件、ant工具以及相应的测试报告工具等。
0 Comments:
张贴评论
<< Home