使用mvn全新安装执行应用程序

时间:2018-07-19 08:32:47

标签: spring maven cucumber

我正在开发一个简单的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>

2 个答案:

答案 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 示例。

相关问题