为什么抛出新的SkipException()会跳过所有类的所有方法?
以下代码似乎跳过所有方法,即使第一类中只包含一个assert.fail?
测试基地:
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.ITestResult;
import org.testng.SkipException;
public class TestBase {
static int numb = 0;
@BeforeMethod
public void beforeMethod() {
if(numb == 1) {
throw new SkipException("Skipping this test");
}
}
@AfterMethod
public void afterMethod(ITestResult testResult) {
if (testResult.getStatus() == ITestResult.FAILURE) {
numb = 1;
}
}
@BeforeClass
public void beforeClass() {
TestBase.numb = 0;
}
测试1:
import org.testng.annotations.Test;
public class Test1 extends TestBase {
@Test(priority = 1)
public void test1() throws Exception {
Assert.fail();
}
@Test(priority = 2)
public void test2() throws Exception {
System.out.println("method2");
}
@Test(priority = 3)
public void test3() throws Exception {
System.out.println("method3");
}
}
的Test2:
import org.testng.annotations.Test;
public class Test2 extends TestBase {
@Test(priority = 1)
public void test1() throws Exception {
System.out.println("method4");
}
@Test(priority = 2)
public void test2() throws Exception {
System.out.println("method5");
}
@Test(priority = 3)
public void test3() throws Exception {
System.out.println("method6");
}
}
控制台输出:
..
... TestNG 6.9.10 by Cédric Beust (cedric@beust.com)
...
[TestNG] Running:
C:\Users\Gianni.Bruno\Desktop\BuyAGiftFramework\BuyAGiftFramework\Test.xml
[TestRunner] Starting executor for test BuyAGift Automation Tests with time out:2147483647 milliseconds.
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeClass beforeClass
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
FAILED: test1
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.fail(Assert.java:53)
at BuyAGiftFramework.test.Test1.test1(Test1.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
SKIPPED: test2
SKIPPED: test3
SKIPPED: test1
SKIPPED: test2
SKIPPED: test3
===============================================
BuyAGift Automation Tests
Tests run: 6, Failures: 1, Skips: 5
Configuration Failures: 0, Skips: 11
===============================================
===============================================
BuyAGift_Automation_Scripts_by_GBruno
Total tests run: 6, Failures: 1, Skips: 5
Configuration Failures: 0, Skips: 11
===============================================
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@366e2eef: 14 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@1936f0f5: 16 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@3f2a3a5: 32 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@614c5515: 94 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 16 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@6537cf78: 19 ms
测试执行XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Automation_Scripts_by_GB" verbose="2" parallel="classes" thread-count="1">
<test name="BuyAGift Automation Tests">
<packages>
<package name="BuyAGiftFramework.test.*"></package>
</packages>
</test>
</suite>
答案 0 :(得分:2)
configFailurePolicy的默认行为是“跳过”。因为如果在配置方法中出现异常,则无需运行测试。但是,如果您仍想运行测试,请将此配置更改为“继续” 可以通过更新配置
来实现
<suite name="SuiteName" parallel="tests" thread-count="1" verbose="10" configfailurepolicy="continue">