AfterSuite无法正常工作。我有2个测试用例扩展了基础测试。 当before方法的第一个测试用例跳过时,aftersuite没有被执行。 Aftersuite也在跳过。 这是错误还是预期的行为? 我的要求是我想在所有测试用例执行后运行一些语句。 以下是测试用例的代码。
基础测试
package suiteone;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
public class BaseTest {
@BeforeSuite
public void BeforeSuite() throws Exception{
System.out.println("before suite");
}
@AfterSuite
public void AfterSuite() throws Exception{
System.out.println("After suite");
}
}
第一个测试用例
package suiteone;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class FirstTestCase extends BaseTest{
@BeforeMethod
public void beforeMethod() {
System.out.println("before method of "+this.getClass().getName());
throw new SkipException("Skipping the test case ");
}
@Test
public void FirstTestCase() {
System.out.println("I am in test case "+this.getClass().getName());
}
@AfterMethod
public void afterMethod() {
System.out.println("after method of "+this.getClass().getName());
}
}
第二个测试用例
package suiteone;
import java.io.IOException;
import org.testng.ITestResult;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class SecondTestCase extends BaseTest{
@BeforeMethod
public void beforeMethod() {
System.out.println("before method of "+this.getClass().getName());
}
@Test
public void SecondTestCase() {
System.out.println("I am in test case "+this.getClass().getName());
}
@AfterMethod
public void afterMethod() {
System.out.println("after method of "+this.getClass().getName());
}
}
Testng xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite one">
<test name="test">
<classes>
<class name="suiteone.FirstTestCase"/>
<class name="suiteone.SecondTestCase"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
当我在打印套件方法之前执行testng.xml文件时,而不是在套件之后执行。
我的查询是,这是错误还是预期的行为。如何使aftersuite也打印出来。 以下是控制台中显示的输出。 (我使用的是testng 6.12,webdriver 3.5.3)
[RemoteTestNG] detected TestNG version 6.12.0
before suite
before method of suiteone.FirstTestCase
before method of suiteone.SecondTestCase
I am in test case suiteone.SecondTestCase
after method of suiteone.SecondTestCase
===============================================
Suite one
Total tests run: 2, Failures: 0, Skips: 1
Configuration Failures: 0, Skips: 3
===============================================
答案 0 :(得分:1)
在任何情况下都不能将您的@AfterSuite
更正为@AfterSuite(alwaysRun=true)
在这种情况下,即使发生故障,您@AfterSuite
也会被处决。