Send As SMS

2005-03-30

又一个测试框架: 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的模式已经相对习惯,因此,这里就对junittestng的一些特性进行比较:

TestNG

Junit

比较

Unit test的代码使用annotation标注,因此,可以在任何类、方法中编写测试代码,只需要使用annotation标注即可。

TestCase继承的子类,并使用setUp/tierDowntestXXXX的命名模式。

虽然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