Ich habe meine TestNG Tests wie unten:Laufabhängige Tests in TestNG in logischen ODER
public class Tests2 {
@Test(priority = 10)
public void Test1() {
System.out.println("+++++++++Running Test1++++++++++++");
throw new SkipException("Skipping the test");
}
@Test(priority = 20)
public void Test2() {
System.out.println("+++++++++Running Test2++++++++++++");
}
@Test(priority = 30, dependsOnMethods = {"Test1","Test2"})
public void Test3() {
System.out.println("+++++++++Running Test3++++++++++++");
}
}
ich meine Test3 ausgeführt werden soll, wenn eine Test1 OR Test2 geben wird. Die Art, wie TestNG funktioniert, sieht so aus, als ob es immer prüft, ob sowohl Test1 als auch Test2 bestanden werden. Gibt es eine Möglichkeit, dass wir das logische UND in logisches ODER ändern können? Ich habe auch versucht die dependsOnMethods wie die Angabe aber auf Glück
dependsOnMethods = {("Test1"),("Test2")})
ich auch dependsOnGroups versucht, aber das wird wieder überprüft, ob alle entsprechenden Tests in logischen weitergegeben werden AND. Nach den obigen Tests laufen erhalte ich die Ausgabe als:
+++++++++Running Test1++++++++++++
+++++++++Running Test2++++++++++++
PASSED: Test2
SKIPPED: Test1
org.testng.SkipException: Skipping the test
at com.Tests.Tests2.Test1(Tests2.java:12)
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:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:207)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:178)
SKIPPED: Test3
===============================================
Default test
Tests run: 3, Failures: 0, Skips: 2
===============================================
===============================================
Default suite
Total tests run: 3, Failures: 0, Skips: 2
===============================================
hey @MSach, ich glaube, ein abhängiges Test für den Fall nicht die dependee (übergeordneten) Test ausgeführt wird und ausgeführt wird. Zusammen mit der Kontrolle der Ausführungsreihenfolge überprüft es auch den bestandenen/fehlgeschlagenen Status des Eltern-Testfalls. Können Sie bitte Ihren Kommentar erläutern? –
Die obige Lösung funktioniert nicht. Test3 wird nicht ausgeführt, wenn entweder Test1 ODER Test2 ein Fehler ist. –
Entfernen Sie einfach die Abhängigkeit, behalten Sie die Priorität. Dann würde es funktionieren. Dies scheint jedoch keine skalierbare Lösung zu sein. –