【发布时间】:2017-02-20 08:15:03
【问题描述】:
如何在使用spring boot:run 命令构建和部署时为 Spring Boot 应用程序运行单元测试。
我的期望是在运行应用程序之前执行我的所有单元测试,但我不想在之前创建另一个像 mvn test 这样的 maven 命令。
我的问题: 我制作了一个简单的 Spring Boot 应用程序,我可以找到一种在从 intellij 或命令行运行应用程序时运行单元测试的方法。首先,我认为可能是我的配置错误或测试类的名称错误,或者项目结构错误。所以我从intellij模板创建了spring boot应用程序。令我高兴的是,它已经编写了默认测试,所以我只需运行应用程序。很遗憾没有执行测试。
这是intellij创建的项目结构、pom.xml、主类和单元测试截图。Project created by intetelij
我将测试运行器和测试更改为失败并再次尝试。结果相同。 unit test changed to fail
我在这里搜索了spring boot:run 命令下面隐藏的内容
http://docs.spring.io/spring-boot/docs/current/maven-plugin/run-mojo.html
我在手册的顶部发现了一些有趣的东西:“在执行自身之前调用生命周期阶段测试编译的执行。”所以我的理解是这个命令只编译测试而不运行它们?如果是这样,问题是 - 是否可以通过在命令中添加一些标志来添加“测试”阶段?
【问题讨论】:
-
你想要实现完全无法使用的东西。生产代码是一部分,测试代码是另一部分。弹簧靴只使用生产代码。通常在构建/部署过程中使用单元测试来验证生产代码的正确性。为什么要在生产环境中运行单元测试?您可能在这里误解了一些东西。
-
也许我没有清楚地说明我的问题。我唯一要寻找的是在运行正常的 Spring Boot 应用程序之前执行单元测试。对于我所有的 maven 项目,我刚刚做了 mvn clean install 并在部署应用程序之前执行了测试。现在我也想做同样的事情。据我所知,在使用
spring boot:run运行 Spring Boot 应用程序时,所有项目首先在部署之前编译。那么在部署应用程序之前是否有可能运行单元测试?我知道我可以在spring boot:run之前运行mvn test,但我只是好奇我是否可以使用一个命令来完成它:) -
是什么阻止你执行
mvn test spring-boot:run?在 IntelliJ 中,您可以创建将执行它的 Maven 运行配置。
标签: java spring unit-testing spring-boot