当前位置: 首页 > 知识库问答 >
问题:

在逻辑OR中的TestNG中运行依赖测试

晏鸿畅
2023-03-14

我的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  = {("Test1"),("Test2")})

我还尝试了依赖组,但这再次检查是否所有相应的测试都在逻辑与中传递。运行上述测试后,我将获得以下输出:

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

共有1个答案

家弘业
2023-03-14

依赖于方法(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++++++++++++");
       }
    }
}
 类似资料:
  • 主要内容:1. dependOnMethods示例,2. dependsOnGroups示例有时,我们可能需要以特定顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态。 TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明。 TestNG允许指定依赖关系: 在注释中使用属性,或者 在注释中使用属性。 在TestNG中,我们使用和来实现依赖测试。 如果依赖方法失败,则将跳过所有后续测试方法。 为了方便演示使用,首先创建一个 Maven 项目: DependO

  • 这项测试似乎不能正常进行。为什么?我需要一个脚本,它接受第一个参数,检查它是哪个字母,并完成这项工作。如果字母是a、b、c或d,则退出,否则为右。

  • 我已经使用Spring Initializer、嵌入式Tomcat Thymeleaf模板引擎生成了一个Spring Boot web应用程序,并将其打包为一个可执行的JAR文件。 使用的技术: Spring引导1.4.2。释放,Spring4.3.4。释放,胸腺2.1.5。释放,Tomcat嵌入8.5.6,Maven 3,Java8 我有一个测试: 但是我运行测试时遇到了这个错误:

  • 以下是我的行动: 我可以右键单击一个测试文件并选择test file,但当它运行时,它找不到该类。我在以下方面看到了错误: Ftharness是我的项目的顶级目录,而src/TestNG是下面包含TestNG测试的目录。我尝试过各种改变都没有成功。有人能帮忙吗?

  • 我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作

  • 共设5个测试班。每一个都使用@Factory(dataprovider=“data”)初始化。我想实现的是,每个测试类中的测试方法应该与dataprovider实例并行运行。此外,测试类应该并行运行。 如下所示。TestClass1应该并行运行dataprovider实例。因此,测试类TestClass1的所有方法将为dataprovider实例并行运行。 data-provider-thread