我试图让 Gradle 执行一些使用 testng.xml 文件定义的测试。我的 testng.xml 文件如下所示:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="mySuite" verbose="1">
<listeners>
<listener class-name="mypackage.MyListener" />
<listener class-name="mypackage.TestOrderer" />
</listeners>
<test name="Tests">
<classes>
<class name="mytestpackage.CrazyTest1"/>
<class name="mytestpackage.CrazyTest2"/>
<class name="mytestpackage.CrazyTest3"/>
</classes>
</test>
</suite>
那我为什么需要这个?我想确保我的测试以类似于此处列出的注释定义的方式组织。正如您可能猜到的,TestOrderer 是一个 IMethodInterceptor。
这就是问题所在,Gradle 似乎正在接管我的 testng.xml 文件并抓取测试目录以查找它想要执行的测试。即使我禁用它,它也无法正确执行这些方法。这是我认为应该有效的方法,但只是,没有。
test {
useTestNG()
options.suites("src/test/resources/crazyTestNG.xml")
# Adding
# scanForTestClasses = false
# causes zero tests to be executed, since the class names don't end in Test
}
看起来它应该是不费吹灰之力的......分叉TestNG进程并让它运行,但我不知道如何告诉Gradle让开并执行我的测试。