#java #maven #pom.xml #cucumber-java #maven-exec-plugin
Вопрос:
Я использую Cucumber framework для тестирования мобильных приложений. В pom.xml , я дал этот приведенный ниже плагин для запуска TestClass.java — который содержит код для загрузки последней APK-версии приложения. Основной метод присутствует внутри этого тестового класса. Мне нужно, чтобы это запускалось перед фактическим выполнением теста. Итак, я использовал плагин exec. Я получаю эту ошибку, если я запускаю с pom.xml —> чистый тест mvn. ClassNotFoundExpection всегда выдается с pom.xml , но индивидуальный класс проходит отлично.
pom.xml:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>installAPK</id>
<phase>generate-test-sources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<includePluginDependencies>true</includePluginDependencies>
<mainClass>org.com.package1.TestClass</mainClass>
</configuration>
</plugin>
Ошибка консоли:
java.lang.ClassNotFoundException: org.com.package1.TestClass
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:246)
at java.lang.Thread.run(Thread.java:748)
Я также попытался изменить фазу после тестовой компиляции. Тем не менее, я получаю ту же ошибку. Кто-нибудь, пожалуйста, помогите.
Ответ №1:
Согласно документации exec-maven-plugin, область зависимостей по умолчанию для выполнения равна runtime
. Пожалуйста, измените его на test
со следующей конфигурацией, если TestClass
он является частью тестовых источников.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
...
</executions>
<configuration>
...
<classpathScope>test</classpathScope>
</configuration>
</plugin>
Комментарии:
1. Просто запрос. Если у меня есть тестовый класс в src / main / java без добавления этого <classpathScope>, будет ли это работать?
2. Да, область зависимостей по умолчанию для выполнения равна
runtime
, которая включает основные классы и зависимости от компиляции / времени выполнения.