一.成功、失败和校验
如果测试方法执行完成没有发生任何异常,或者发生了预期的异常,则认为测试成功(关于@Test注解上的exceptedExceptions属性,可以参考文档)。
测试方法可以有抛出异常或用各种断言(assert关键字)组成,“assert”失败将处罚一个AssertErrorException,该异常会将测试方法标记为失败。
测试方法校验例子:
@Testpublic void verifyLastName() {
assert "Beust".equals(m_lastName) : "Expected name Beust, for" + m_lastName;} TestNG也包含JUnitAssert类,因此可以校验复杂对象:import static org.testng.AssertJUnit.*;//...@Testpublic void verify() {
assertEquals("Beust", m_lastName);}
注意,上面的例子使用了静态导入,以便于能够使用assertEquals方法,而不需使用类作为前缀。
二.日志和结果
当注册了SuitRunner,将会在指定路径下生成了一个测试执行结果文件index.html。
使用Listeners和Reporters可以很容易生成你自己的报告:
1)Listeners实现接口org.testng.ITestListeners,并实时通知测试何时开始、通过、失败等。
2)Reporters实现接口org.testng.ITestReporters,当所有测试套件运行时得到通知,IReporter实例接收描述整个测试运行的对象列表。
例如,如果想要生成一个PDF的测试报告,不需要实时获取测试执行的通知。如果你想要编写测试的实时报告,例如带有进度条的GUI或在调用每个测试时显示点(“.”)的文本报告,ITestListener是最好的选择。
2.1 日志监听
下面是一个例子,当一个测试用例执行通过时,显示一个”.”,执行失败显示“F”,跳过显示“S”:
public class DotTestListener extends TestListenerAdapter {
private int m_count = 0; @Override public void onTestFailure(ITestResult tr) {
log("F"); } @Override public void onTestSkipped(ITestResult tr) {
log("S"); } @Override public void onTestSuccess(ITestResult tr) {
log("."); } private void log(String string) {
System.out.print(string); if (++m_count % 40 == 0) {
System.out.println(""); } }}
在这个例子中,