我们曾经有过如下命令:
gradlew test --tests *MyTest
例如,类MyTest位于com.test.MyTest包中。当使用gradle版本<5.0时,这工作得很好,但升级到5.1.1后,我收到以下错误:
没有给出的测试包括:[* MyTest]( - 测试过滤器)
我们已经替换了所有这些事件,因为我认为使用类的完整路径要好得多。但我想知道为什么这不再起作用了。
顺便说一句:我正在使用TestNG,并且提到的类至少有一个使用@Test注释的公共方法。
发现了问题。它与gradle升级或TestNG无关。
基本上有人在其他类中初始化了一个全局变量并在那里使用了固定索引,即
public class myClass extends Something{
private final String name = names.getNames(0);
...
当我们使用*调用gradle任务时,它执行了那段代码,在这种情况下,它会导致IndexOutOfBoundsException,因为该列表在那个时间点是空的。
执行以下命令帮助我找到问题:
gradlew test --tests *MyTest --debug