我一直在阅读Gerard Meszaros的著作《xUnit Patterns: Refactoring Test Code》,想为我的单元测试编写更多经过测试的实用方法。据我所知,有三个地方可以放置这样的实用程序:
对于情况(3),没有问题。测试实用工具库只是一个常规项目,拥有自己的测试套件。
情况(1)有点复杂:唯一合适的地方是将测试放在同一测试用例类中,但如何确保“正常”测试在实用程序测试失败时被跳过?我可以在测试之间引入依赖关系(例如,使用TestNG的属性
情况(2)非常混乱。将测试放入帮助器类中看起来很丑陋,如果某些东西(Maven、IDE)期望测试用例类以
我是否遗漏了什么?是否有行业惯例来处理这个问题?还是我应该忘记依赖关系,只需在一堆测试同时失败时查看红色列表中的实用程序测试?
- 如果实用程序仅在单个测试用例类中使用,请将其放在那里。
- 如果它在单个项目中的几个测试用例类中使用,请将其放入单独的测试帮助器类中。
- 如果它在一个以上的项目中使用,请将其放入单独的测试实用工具库中。
对于情况(3),没有问题。测试实用工具库只是一个常规项目,拥有自己的测试套件。
情况(1)有点复杂:唯一合适的地方是将测试放在同一测试用例类中,但如何确保“正常”测试在实用程序测试失败时被跳过?我可以在测试之间引入依赖关系(例如,使用TestNG的属性
dependsOnGroups = "utilities"
),但这看起来有点丑陋:例如,我需要在每个测试上重复该属性或将它们分组到相互依赖的嵌套测试用例类中。情况(2)非常混乱。将测试放入帮助器类中看起来很丑陋,如果某些东西(Maven、IDE)期望测试用例类以
Test
结尾,而我的帮助器类没有,则可能会破坏测试发现。将测试放入单独的HelperTest
测试用例类中听起来更好,但这样我又有了另一个依赖问题:如果我让一些测试依赖于那个HelperTest
类,那么当我仅运行单个测试文件时,它们都会失败,因为在运行期间这些实用程序测试甚至不存在(至少在TestNG中是这样)。我是否遗漏了什么?是否有行业惯例来处理这个问题?还是我应该忘记依赖关系,只需在一堆测试同时失败时查看红色列表中的实用程序测试?