Запустите тесты TestNG из одного из модулей в мультимодульном проекте maven. - PullRequest
0 голосов
/ 11 марта 2020

У меня есть многомодульный проект maven, состоящий из 3 модулей:

  • framework (без папки src / tests) в pom. xml без зависимостей
  • объекты страницы (без папки src / tests) pom. xml содержит зависимость от модуля фреймворка
  • tests (без папки src / main) pom. xml содержит зависимость от модуля фреймворка и модуля объектов страницы

Все классы тестов и testng. xml suite находятся в модуле tests .

Когда я пытаюсь запустить один тест или набор тестов в Intelij (или с mvn clean test -DsuiteXmlFile = XXX), я получаю следующую ошибку

 java.lang.NoClassDefFoundError: org/testng/IInvokedMethodListener2
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
    at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
    at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
    at org.testng.TestNG.addServiceLoaderListeners(TestNG.java:961)
    at org.testng.TestNG.initializeConfiguration(TestNG.java:898)
    at org.testng.TestNG.initializeEverything(TestNG.java:988)
    at org.testng.TestNG.run(TestNG.java:999)
    at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
    at om.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:110)
Caused by: java.lang.ClassNotFoundException: org.testng.IInvokedMethodListener2

Я искал и обнаружил, что создание конфигураций запуска может помочь, поэтому я создал run Конфигурация и выбрал «В одном модуле» радио и мой тестовый модуль, но это не помогло.

В чем причина этой ошибки?

...