Java 如果其中一个测试失败,我如何继续在TestNG中运行测试

Java 如果其中一个测试失败,我如何继续在TestNG中运行测试,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,如果其中一个测试失败,我如何继续在TestNG中运行测试。我在xml文件中按照continue设置了配置策略。下面是我的xml文件。我还尝试将每个测试设置为(alwaysrun=“true”)。如果其中一个测试失败,则不执行所有其他测试。它显示为失败 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Regression" verbose="1" configfailurepolic

如果其中一个测试失败,我如何继续在TestNG中运行测试。我在xml文件中按照continue设置了配置策略。下面是我的xml文件。我还尝试将每个测试设置为(alwaysrun=“true”)。如果其中一个测试失败,则不执行所有其他测试。它显示为失败

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression" verbose="1" configfailurepolicy="continue">


    <!-- yellowfin login credentials -->
    <parameter name="URL" value="http://10.10.5.77:8082/" />
    <parameter name="userName" value="admin" />
    <parameter name="passsword" value="test" />

    <test name="ReportFormatting">
        <classes>
            <class name="fin.bi.test.ReportFormatting">
                <methods>

                    <include name="ValidateDataSection"></include>
                    <include name="ValidateColumnandRowHeadingsandBorder"></include>
                    <include name="ValidateTitleandDescription"></include>
                    <include name="ValidateHeaderFooterandTableSort"></include>
                    <!-- <include name=""></include> -->

                </methods>
            </class>
        </classes>
    </test>
</suite>

引用文件:

configfailurepolicy
-在类/方法失败一次后,是继续在类/方法之前/之后尝试,还是跳过剩余的。因此,这对常规测试方法没有影响,只影响配置方法

alwaysRun
-如果设置为true,此测试方法将始终运行,即使它依赖于失败的方法。如果此测试不依赖于任何方法或组,则将忽略此属性。在您的示例中,方法之间似乎没有任何依赖关系。所以这个属性也将被忽略

您共享的是TestNG的一个非常基本的用例

下面是一个简单的示例,展示了此功能的实际应用(我正在使用TestNG版本
6.14.3

这是我的示例测试类

import org.testng.annotations.Test;
公共类SampleTestClass{
@测试(组={“报告格式:数据”})
公共void testMethodA(){
抛出新的RuntimeException(“故意测试失败”);
}
@测试(组={“报告格式:列和行标题和边框”})
公共void testMethodB(){
System.err.println(“testMethodB()”);
}
}
下面是我的套件xml的外观:


这是完整的执行输出

...
... TestNG 6.14.3 by Cédric Beust (cedric@beust.com)
...

java.lang.RuntimeException: Intentionally failing the test

    at com.rationaleemotions.stackoverflow.qn49483424.SampleTestClass.testMethodA(SampleTestClass.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

testMethodB()
PASSED: testMethodB
FAILED: testMethodA
java.lang.RuntimeException: Intentionally failing the test
    at com.rationaleemotions.stackoverflow.qn49483424.SampleTestClass.testMethodA(SampleTestClass.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)


===============================================
    49483424_test
    Tests run: 2, Failures: 1, Skips: 0
===============================================

===============================================
49483424_Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================


Process finished with exit code 0
因此,我建议您首先尝试运行一个简单的测试,排除所有其他依赖项,如扩展报告等,并检查它是否适合普通Java测试。 如果它仍然不起作用,那么我请求您在这里提交一个bug:并在其中包括一个示例测试(最好是一个不依赖于任何外部库的测试,而只是使用一堆打印语句来显示bug)。我会看看出了什么问题

...
... TestNG 6.14.3 by Cédric Beust (cedric@beust.com)
...

java.lang.RuntimeException: Intentionally failing the test

    at com.rationaleemotions.stackoverflow.qn49483424.SampleTestClass.testMethodA(SampleTestClass.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

testMethodB()
PASSED: testMethodB
FAILED: testMethodA
java.lang.RuntimeException: Intentionally failing the test
    at com.rationaleemotions.stackoverflow.qn49483424.SampleTestClass.testMethodA(SampleTestClass.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)


===============================================
    49483424_test
    Tests run: 2, Failures: 1, Skips: 0
===============================================

===============================================
49483424_Suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================


Process finished with exit code 0