Spring Boot不运行单元测试
在使用spring boot:run
命令构建和部署时,如何运行Spring Boot" title="Spring Boot">Spring Boot应用程序的单元测试。
我的期望是在运行应用程序之前执行我所有的单元测试,但是我不想像以前那样做另一个Maven命令mvn test
。
我的问题:我做了一个简单的spring
boot应用程序,当我从intellij或命令行运行应用程序时,我找不到运行单元测试的方法。首先,我认为也许我配置错误或测试类的名称错误或项目结构错误。所以我从intellij模板创建了spring
boot应用程序。令我高兴的是,它已经编写了默认测试,所以我只运行应用程序。很遗憾,未执行测试。
这是intellij创建的项目结构,pom.xml,主类和单元测试的屏幕快照。intetelij创建的项目
我更改了测试运行程序并测试失败,然后再次尝试。结果相同。 单元测试更改为失败
我在spring boot:run
这里http://docs.spring.io/spring-boot/docs/current/maven-
plugin/run-mojo.html搜索了隐藏在命令 下方的内容
我在手册开头发现了一些有趣的东西:“在执行生命周期阶段测试编译之前先执行它。” 因此,我的理解是该命令仅编译测试而不运行测试?如果是,那么问题是-
是否可以通过在命令中添加一些标志来添加“测试”阶段?
回答:
您的问题是与Maven生命周期有关。根据的文档,默认情况下,spring-
boot:run它绑定到lifecyle阶段validate
,并test-compile
在执行之前调用该阶段。
您要求的是在运行应用程序之前 执行 测试。您可以使用POM中的自定义Maven配置文件来执行此操作-类似于以下内容。
<project> <profiles>
<profile>
<id>test-then-run</id>
<build>
<defaultGoal>verify</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>spring-boot-run</id>
<phase>verify</phase>
<goals>
<goal>run</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>
...
</project>
在您的POM中使用此功能之后,您可以运行测试并通过以下方式启动应用程序:
mvn -P test-then-run
这将run
目标绑定到verify
阶段而不是validate
阶段,这意味着将首先运行测试。您可以在此处查看运行阶段的顺序:https : //maven.apache.org/ref/3.3.9/maven-
core/lifecycles.html
以上是 Spring Boot不运行单元测试 的全部内容, 来源链接: utcz.com/qa/403724.html