簡體   English   中英

以邏輯OR在TestNG中運行相關測試

[英]Running dependent tests in TestNG in logical OR

我有如下的TestNG測試:

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++++++++++++");
    }
}

如果要通過Test1或Test2之一,我希望執行我的Test3。 TestNG的工作方式似乎總是檢查是否同時通過了Test1和Test2。 有沒有一種方法可以將邏輯AND更改為OR。 我也嘗試指定dependsOnMethods,但是運氣不錯

dependsOnMethods  = {("Test1"),("Test2")})

我還嘗試了dependsOnGroups,但是再次檢查是否所有相應的測試都以邏輯AND傳遞。 運行以上測試后,我得到的輸出為:

+++++++++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
===============================================

dependsOnMethods只是告訴您單元測試的運行順序。 這並不意味着這些測試應該通過或失敗。

您可以以編程方式進行

public class Tests2 {
    private boolean testOnePassed=false;
    private boolean testTwoPassed=false;

    @Test(priority = 10)
    public void Test1() {
        System.out.println("+++++++++Running Test1++++++++++++");
        testTwoPassed = false// based on your custom condition
        throw new SkipException("Skipping the test");
    }

    @Test(priority = 20)
    public void Test2() {
        System.out.println("+++++++++Running Test2++++++++++++");
         testTwoPassed = true// based on your custom condition

    }

    @Test(priority = 30)
    public void Test3() {
       if(testOnePassed || testTwoPassed){
        System.out.println("+++++++++Running Test3++++++++++++");
       }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM