我们最近开始使用TDD,我们正在为我们开发的每个RESTful Web服务编写JUnit测试用例。在发布新版本时,在生产环境中运行JUnit测试用例是否是个好主意?
背景 我们的网络应用程序是企业网络应用程序,具有复杂的业务逻辑。计划是使用@After和@AfterClass来清理运行测试用例生成的测试数据。
Web应用程序既可以作为SaaS,也可以作为内部部署版本,我们计划在可行和良好实践的情况下验证这两个版本的升级。我知道我们将在临时环境中运行这些测试用例,但要确保在升级/部署期间我们没有破坏任何内容,或者环境没有产生任何不同的影响。
现在的问题是,“这是好的做法吗?如果没有建议的话?”
答案 0 :(得分:4)
您的单元测试应该只测试代码。他们不应该使用数据库和/或Web服务等外部源进行修改,然后才能进行集成测试。
通常我建议在构建/部署项目到生产之前运行单元测试,这些可以在构建服务器或QA /登台服务器上运行。只有当它们全部通过才能部署到生产中,那么你知道构建在这个意义上是稳定的。
如果您的集成测试确实与其他服务有关并且可能会修改数据等,我就不会在生产中运行这些测试。我会在您的QA / Staging服务器上运行它们,以防止即将发布到生产的代码。
答案 1 :(得分:0)
这是一个有趣的问题;我会说不,你不想运行一个完整的单元测试套件,但是你可能想投资维护一个单独的部署烟雾测试套件。
原因 - 您的测试套件可能会影响prod数据库,例如实际测试中的错误无法回滚或其他什么。
此外,您不希望在prod中测试整个代码库,只需验证它已部署好(假设您在运行整个测试套件时获得了satsifactory结果)。