【问题标题】:using command line how run junit test present inside the war file使用命令行如何在war文件中运行junit测试
【发布时间】:2015-06-11 18:13:56
【问题描述】:

使用 maven,我们创建了一个 war 文件,我们需要在 tomcat(应用程序服务器)中针对不同的环境(DEV/QA/UAT)部署这个 war。 在部署之前,我们需要为每个环境运行 JUNIT 测试。 我们已经编写了近 60 个需要通过的 junit 测试
是否可以对war文件运行junit测试?
如果是的话,如何在war文件中运行所有junit测试

【问题讨论】:

  • 您的 JUnit 测试位于您的 Maven 项目中(在 src/test/java/... 下,并且曾经在 target/test-classes) 下编译不在 war 文件中,不是吗?如何运行它们见Maven Surefire Plugin
  • 单元测试强制您编写的代码按照您的预期执行,除非您在 DEV/QA/UAT 上进行代码更改,否则您不需要重新运行它们。你是说功能测试吗? Maven 是关于做事的标准方式,而您的问题听起来像是您以非标准方式做事,这会阻碍人们帮助您。
  • 感谢 Gerold Broser 的评论

标签: java maven tomcat junit junit4


【解决方案1】:

WAR 文件是不应包含任何单元测试的部署工件。正如@Gerold Broser 正确指出的那样,如果您将它们放入“src/test/java”,Maven 会为您处理排除单元测试。永远不要尝试将它们放入“src/main/java”。

我们已经编写了近 60 个需要通过的 junit 测试 是否可以对war文件运行junit测试?

如果它们是真正的单元测试,则不需要针对已部署的战争服务执行它们。他们正在测试小块功能,通常在test phase of maven lifecycle.

期间执行

如果测试是针对已部署的服务器发出请求,那么在那个阶段它们不再是单元测试,应该被放入单独的测试项目中。

运行测试的适当位置始终是持续集成服务器,因此可以通过一种或另一种方式确保执行是自动化的!没有 CI 服务器的测试是浪费时间。

顺便说一句 有 maven-tomcat7-plugin 可以在 interation-test phase of Maven lifecycle 期间启动 tomcat 并部署它,但是这个 maven 插件似乎不再维护,并且不适用于 Servlet 3.0 Java 配置和 Tomcat 8。所以我不推荐那条路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2011-04-29
    • 2011-01-15
    相关资源
    最近更新 更多