Мне удалось обойти мою проблему, используя библиотеку Reflections . Эта проблема в TestNG должна получить пример проекта, который выполняет основную проблему происходящего, но для того, что мне нужно, это работает отлично. Вот код, на который я переключился, чтобы добиться успеха:
ВАЖНОЕ ПРИМЕЧАНИЕ: Я должен был использовать отражения 0.9.10 и , а не 0.9.11 (последний на данный момент). Мне нужно выяснить, что не так в этой другой версии.
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();
Логика поиска класса довольно проста:
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setUrls(ClasspathHelper.forClassLoader(classLoader));
configurationBuilder.addClassLoader(classLoader);
Reflections reflections = new Reflections(configurationBuilder);
Set<Class<?>> scenarioClasses = reflections.getTypesAnnotatedWith(Test.class);
// filter classes here with criteria
Я попытаюсь написать что-то еще, что касается ошибки , которая является полным примером, но это дает мне ответ на проблему, характерную для моей проблемы, которая породила этот вопрос.