【问题标题】:JUnit Test Cases on Production生产环境中的 JUnit 测试用例
【发布时间】:2013-01-31 13:18:15
【问题描述】:

我们最近开始了 TDD,并且正在为我们开发的每个 RESTful Web 服务编写 JUnit 测试用例。发布新版本时在生产环境中运行 JUnit 测试用例是个好主意吗?

背景: 我们的网络应用程序是企业网络应用程序,具有复杂的业务逻辑。计划是使用@After 和@AfterClass 来清理运行测试用例生成的测试数据。

该网络应用可作为 SaaS 和本地版本提供,如果可行且是良好做法,我们计划验证这两个版本的升级。我知道我们将让这个测试用例在暂存环境中运行,但要确保我们在升级/部署期间没有破坏任何东西,或者环境没有产生任何不同的影响。

现在的问题是,“这是好的做法吗?如果没有,建议怎么做?”

【问题讨论】:

  • 您可以在集成测试服务器或登台服务器上进行测试,而不是生产服务器。系统范围的功能只能在生产中引入该功能时测试一次。

标签: java unit-testing junit


【解决方案1】:

您的单元测试应该只测试代码。它们不应该使用数据库和/或 Web 服务等外部资源进行修改,然后它们就会成为集成测试。

一般来说,我建议在构建/部署项目到生产之前运行单元测试,这些可以在构建服务器或 QA / staging 服务器上运行。只有当它们都通过时,您才会部署到生产环境,那么您就知道构建在这个意义上是稳定的。

如果您有与其他服务对话并可能修改数据等的集成测试,我不会在生产环境中运行这些测试。我会在您的 QA/Staging 服务器上针对即将发布到生产环境的代码运行它们。

【讨论】:

    【解决方案2】:

    这是一个有趣的问题;我会说不,您不想运行完整的单元测试套件,但是您可能想投资维护单独的部署冒烟测试套件。

    原因 - 您的测试套件可能会影响产品数据库,例如实际测试中的错误无法回滚或其他东西。

    另外,您不想在 prod 中测试您的整个代码库,只需验证其部署是否正常(假设您在运行整个测试套件时获得了令人满意的结果)。

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2011-08-31
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多