TestNG找不到带有程序调用的测试

时间:2019-01-06 01:06:40

标签: java testng

我已将TestNG设置为从外部Jar文件中进行一些测试。问题在于,当我调用该调用时,它们实际上并没有运行。

我正在这样做:

XmlSuite suite = new XmlSuite();
suite.setName("Invoked Run");

XmlTest test = new XmlTest(suite);
test.setName("Invoked Run");
test.setParallel(XmlSuite.ParallelMode.NONE);
test.setXmlPackages(Collections.singletonList(new XmlPackage("com.eln00b.*")));
test.setTimeout(TimeUnit.SECONDS.toMillis(300));

TestNG testNg = new TestNG();
testNg.setOutputDirectory(persisPath);
testNg.setXmlSuites(Collections.singletonList(suite));

URLClassLoader customClassLoader = URLClassLoader.newInstance(jarUrls);
testNg.addClassLoader(customClassLoader);

testNg.run();
int status = testNg.getStatus();

状态始终为8(HAS_NO_TEST)。

我知道Jars在类加载器中,因为我可以运行:

customClassLoader.loadClass("com.eln00b.MyTest");

帮助!!!!!

1 个答案:

答案 0 :(得分:0)

我现在可以使用Reflections库解决我的问题。 This issue in TestNG应该得到一个示例项目,该示例项目执行正在发生的事情的核心问题,但是对于我所需要的,这是完美的。这是我为了使事情滚动而切换到的代码:

重要提示::我不得不使用Reflections 0.9.10,而不是 0.9.11(截止到目前)。我需要找出其他版本的问题。

k

查找类的逻辑非常简单:

URLClassLoader customClassLoader = URLClassLoader.newInstance(jarUrls);
Optional<Class<?>> oTestClass = findClass("SomeCriteria", urlClassLoader);
Class<?> testClass = oTestClass.orElseThrow(IOException::new);

XmlSuite suite = new XmlSuite();
suite.setName("Invoked Run");

XmlClass xmlClass = new XmlClass(testClass);

XmlTest test = new XmlTest(suite);
test.setName("Invoked Run");
test.setParallel(XmlSuite.ParallelMode.NONE);
test.setXmlClasses(Collections.singletonList(xmlClass));
test.setTimeout(TimeUnit.SECONDS.toMillis(300));

TestNG testNg = new TestNG();
testNg.setOutputDirectory(persisPath);
testNg.setXmlSuites(Collections.singletonList(suite));

testNg.run();
int status = testNg.getStatus();

我将尝试写一些与the bug相关的其他内容,这是一个完整的示例,但这为我提供了针对产生该问题的特定问题的答案。