我目前正在调查我们应该如何在即将推出的项目中执行测试。为了在开发过程早期发现错误,开发人员将在实际代码(TDDish)之前编写单元测试。单元测试将集中在单元上(这种情况下的一种方法),因此依赖性会被嘲弄等等。从单元测试到集成测试的有效转换
现在,我还想在与其他单元交互时测试这些单元因为单元测试已经写好了,所以我认为应该有一个有效的最佳做法来做到这一点。我的想法是,单元测试将被重用,但被嘲弄的对象将被删除并替换为真实的对象。我现在不同的想法是:
- 在每个测试类中使用全局标志来决定是否应该使用模拟对象。此方法将需要几个
if
语句 - 使用工厂类创建“instanceWithMocks”或“instanceWithoutMocks”。这种方法对于新开发人员来说可能会很麻烦并且需要一些额外的类
- 将集成测试与单元测试分开在不同的类中。然而,这将需要大量的冗余代码和维护测试用例将是工作的两倍
我看到这些方法的所有方法都有优点和缺点。哪些是首选的,为什么?是否有更好的方式从单元测试有效地转换到集成测试?或者这通常以其他方式完成?