我正在开发一个简单的spring boot应用程序(从spring initializr创建,包含Web超级依赖性)。
我还为接受测试添加了黄瓜依赖性。
当我运行mvn clean install
时,它将直接运行黄瓜测试,但是我想在测试之前运行该应用程序(为什么在测试终止后不停止该应用程序)。
我尝试了maven exec插件,但是它不起作用:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions><execution>
<goals><goal>java</goal></goals>
</execution></executions>
<configuration>
<mainClass>org.dhappy.test.NeoTraverse</mainClass>
</configuration>
</plugin>
答案 0 :(得分:1)
如果需要跳过测试,仅编译和打包应用程序,则可以如下设置skipTests属性:
mvn install -DskipTests
如果要运行该应用程序,则可以使用exec插件。有两种类型(实际上是“目标”):一种运行包应用程序,另一种运行Java类。如果知道类名,则可以按以下方式运行该插件:
mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse"
最后,如果要在运行测试之前先运行应用程序,则实际上不是在进行单元测试。在这种情况下,您的测试可能是集成测试,而不是单元测试。实际的详细信息会有所不同,具体取决于您的应用程序是否具有复杂的需求,例如数据库和Web服务器。
集成测试在maven生命周期的不同“阶段”进行。
简而言之,您需要将Java测试类重命名为*Test.java
以外的名称,以便maven surefire插件会忽略您的测试。然后,您需要包括maven-failsafe-plugin
以便进行集成测试。
答案 1 :(得分:1)
您要执行以下步骤:
启动和停止应用程序是一回事,可以在<phase>pre-integration-test</phase>
和<phase>post-integration-test</phase>
中完成。集成测试在<phase>integration-test</phase>
您想阅读并理解https://maven.apache.org/surefire/maven-failsafe-plugin/usage.html。具体来说,请看使用码头和maven-failsafe-plugin 示例。