我已将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");
帮助!!!!!
答案 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相关的其他内容,这是一个完整的示例,但这为我提供了针对产生该问题的特定问题的答案。