如果编写的@Test方法失败超过50%,我想停止执行。
E.g:
public void LoginTest(){
@Test
public void ValidUserName(){
}
@Test
public void InValidUserName(){
}
@Test
public void ValidUserID(){
}
@Test
public void ValidUserIDInvalidPassword(){
}
@Test
public void EmptyUserNamePassword(){
}
}
如果ValidUserName()
,InValidUserName()
和ValidUserID()
失败,则表示LoginTest 50%@Test方法失败,现在,我不想执行ValidUserIDInvalidPassword()
和{{ 1}}
如果有人能帮助我,那就太好了。
答案 0 :(得分:3)
实现IInvokedMethodListener
接口,并在达到阈值时抛出SkipException
。在下面的代码中使用了30%。
public class MyMethodInvoke implements IInvokedMethodListener {
private int failure = 0;
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
int testCount = testResult.getTestContext().getAllTestMethods().length;
if((failure * 1.0) / testCount > 0.3)
throw new SkipException("Crossed the failure rate");
}
@Override
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
if(testResult.getStatus()==ITestResult.FAILURE)
failure++;
}
}
@Listeners({package.MyMethodInvoke.class})
public class Test {
它适用于单个类中的测试,不知道它如何在套件中的多个类中进行测试。甚至是并行执行。
答案 1 :(得分:1)
你想要什么是没有意义的。 尝试使用依赖项重构方法。 testNG页面的示例:
time
请参阅:http://testng.org/doc/documentation-main.html#dependent-methods
<强>更新强>
有@Test
public void serverStartedOk() {}
@Test(dependsOnMethods = { "serverStartedOk" })
public void method1() {}
的概念,但它通常用于每个方法并与successPercentage
结合使用。例如,在异步调用中,无法保证100%调用成功。所以,人们可以这样做:
invocationCount
但这与你想要的不相符。
更新2: &#34;你想要什么是没有意义的。&#34; - &GT;阅读:&#34; TestNG&#34;不支持开箱即用。但是有一些解决方法。请参阅http://testng.1065351.n5.nabble.com/how-to-stop-a-test-suite-if-one-method-fails-td13441.html
中的好答案