使用mvn clean install执行应用程序



我正在开发一个简单的spring-boot应用程序(从spring-initializer创建,包含web mega依赖项(。

我还为验收测试添加了Cucumber依赖项。

当我运行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>

跳过测试

如果需要跳过测试,只编译和打包应用程序,可以按如下方式设置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,以便进行集成测试。

您想要执行以下步骤:

  • 启动应用程序
  • 运行一组测试
  • 停止应用程序

启动和停止应用程序是一回事,可以在<phase>pre-integration-test</phase><phase>post-integration-test</phase>中完成。集成测试在<phase>integration-test</phase>中完成

你想要阅读和理解https://maven.apache.org/surefire/maven-failsafe-plugin/usage.html.具体来说,看看使用jetty和maven故障保护插件的例子。

最新更新