"未发现给定包含的测试" for TestNG + Gradle + @Test(dependsOnMethods)

时间:2016-04-19 15:25:46

标签: java gradle testng

我有以下虚拟测试类

package my.test;

import org.testng.annotations.*;

public class NgScenario {

    public static void trace(String msg) {
        System.err.println(msg);
    }

    @BeforeClass
    public void init() {
        trace("-- NgScenario");
    }

    @AfterClass
    public void shutdown() {
        trace("-- NgScenario");
    }

    @Test(dependsOnMethods = {"step2"})
    public void step1() throws Exception {
        trace("-- step1");
    }

    @Test
    public void step2() throws Exception {
        trace("-- step2");
    }

    @Test(dependsOnMethods = {"step2"})
    public void step3() throws Exception {
        trace("-- step3");
    }
}

build.gradle

apply plugin: 'java'

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.testng:testng:6.9.10"
}

test {
    useTestNG()
    scanForTestClasses = false  
    include '**/*'

    beforeTest { descriptor ->
        logger.lifecycle("Gradle running test: ${descriptor}")
    }
}

当我执行简单命令gradle test时 - 一切正常并且输出正在跟随(注意:step2故意依赖于step1来检查订单是否确实正确):

Gradle running test: Test method step2(my.test.NgScenario)
Gradle running test: Test method step1(my.test.NgScenario)
Gradle running test: Test method step3(my.test.NgScenario)

现在,假设我在场景中有100个方法,并且我想在我的IDE中仅测试单个方法分支 - 我运行命令gradle test --tests my.test.NgScenario.step1并收到此错误

No tests found for given includes: [my.test.NgScenario.step1]

step1的注释中包含dependsOnMethods。没有 dependsOnMethods的测试的相同命令运行正常:gradle test --tests my.test.NgScenario.step2

所以问题是 - 我正在做什么/期待错误?

我希望两者都使用测试场景,并且能够在IDE中启动单独的测试子树。

除此之外 - 能够执行' step1'没有任务取决于(假设父母'步骤是'清理+设置' - 调试单个测试时不需要它们,所有先决条件已经就位)。

作为偏离主题 - 可以推荐另一个能够集成到gradle构建中的框架。

1 个答案:

答案 0 :(得分:1)

尝试一下:

gradle :clean  -Dtest.single=Name_of_your_test_here test