1
3
编写接口测试来运行接口,并为实际实现编写更详细的测试。 Interface-based design 稍微讨论一下单元测试应该为该接口形成一种“契约”规范的事实。也许当规范出现时,会有一种语言支持的方法来实现这一点。 在这种情况下,这是一种严格的策略实现,接口测试就足够了。在其他情况下,如果接口是实现功能的一个子集,那么您将同时对接口和实现进行测试。例如,考虑一个实现3个接口的类。 编辑:这很有用,这样当您在路上添加接口的另一个实现时,您已经有了测试来验证类是否正确地实现了接口的约定。这可以适用于一些特定的东西,如IsortingStrategy,以及范围广泛的IDisposable。 |
2
2
例如,在接口上编写测试并在每个实现中重用它们没有任何错误。-
我认为这是 最少努力 解决方案,非常符合敏捷/TDD原则。 |
3
2
我可以使用选项1,并记住重构是TDD的一部分,通常是在重构阶段,您将转向设计模式(如策略),因此我不会对编写新测试感到遗憾。 如果您想要测试每个路径查找器impl的具体实现细节,您可以考虑传递模拟图节点,这些模拟图节点在某种程度上能够帮助断言实现的dijkstra或depthFirst等。(也许这些模拟图形节点可以记录它们是如何被遍历的,或者以某种方式度量性能。)也许这是测试过度杀戮,但是如果您知道您的系统出于某种原因需要这三种不同的策略,那么最好进行测试来演示为什么——否则,为什么不选择一个实现并抛出另一个实现呢?呃? |
4
1
我不介意将测试代码重用为具有类似功能的新测试的模板。根据测试中的特定类,您可能需要用不同的模拟对象和期望对它们进行返工。至少要重构它们才能使用新的实现。不过,我将遵循TDD方法,先进行一个测试,然后为新类重新编写它,然后只编写代码来通过该测试。不过,这可能需要更多的规则,因为您已经有了一个实现,并且无疑会受到您已经编写的代码的影响。 |
5
1
当然可以。 首先对所有测试进行评论,只有一个测试。当您使一个测试通过时,请重构或取消对另一个测试的注释。 JTF |
Eris · 纯虚拟成员有什么优势吗(除了他们可能防止的人为错误)? 2 年前 |
James Nguyen · Java多态性:为什么返回错误? 6 年前 |
Alex Cristea · 如何从另一个类的数组中打印特定行 6 年前 |
juztcode · C语言中的静态和动态分辨率++ 6 年前 |
Hugo · 具有多态关系的活动记录获取关联模型 6 年前 |
pooya13 · 机器代码层上虚函数和条件执行的区别 6 年前 |
Nisba · C中子类类型未知的模型类/子类++ 6 年前 |
R zu · 使用多次调用的可替换方法初始化 6 年前 |