TestNG + Gradle + @Test(dependsOnMethods)的“未找到给定包含的测试”

Xtr*_*der 5 java testng gradle

我有以下虚拟测试课程

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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}")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行简单的命令时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)
Run Code Online (Sandbox Code Playgroud)

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

No tests found for given includes: [my.test.NgScenario.step1]
Run Code Online (Sandbox Code Playgroud)

step1具有dependsOnMethods在其注解。相同的测试命令,无需 dependsOnMethods运行OK :gradle test --tests my.test.NgScenario.step2

所以问题是- 我在做什么/期望错了?

我既想使用测试场景,又想在IDE中启动单个测试子树。

最重要的是-能够在不依赖于其的任务的情况下执行“ step1”会很好(假设“父级”步骤为“ clean + setup”-调试单个测试并不需要所有先决条件) -地点)。

作为主题外,可以推荐另一个可以集成到gradle构建中的框架。

小智 2

尝试这个:

gradle :clean  -Dtest.single=Name_of_your_test_here test
Run Code Online (Sandbox Code Playgroud)