2

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

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

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

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

4

2 回答 2

4

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

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

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

于 2013-01-31T13:28:14.063 回答
0

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

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

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

于 2013-01-31T13:29:11.283 回答