进行考虑不同类层次结构的单元测试的最佳方法是什么,例如:
我有一个基类 Car
和另一个基类 Animal
。
Car 有派生类 VolksWagen
和 Ford
。
Animal 有派生类 Dog
和 Cat
。
您将如何开发在运行时决定要使用哪种对象的测试。 考虑到这些测试将应用于数百万个对象,在不使用代码复制的情况下实现此类测试的最佳方法是什么 来自不同的层次结构?
这是问我一个 friend 的面试问题。
最佳答案
我所看到的问题:避免重复通用测试来验证通用基类型的 n 个派生。
- 创建抽象测试夹具。在这里,您使用抽象方法 GetTestSubject() 在抽象基类(搜索词“抽象测试夹具”)中编写针对基类型 & 的测试。此类型的派生覆盖方法以返回要测试的类型的实例。因此,您需要使用一个覆盖的方法编写 N 个子类型,但您的测试将只编写一次。
- NUnit 等一些单元测试框架支持“参数化测试”(搜索词)——您必须在其中实现一个方法/属性,该方法/属性将返回测试需要针对的所有对象。然后它将在运行时针对每个此类对象运行一个/所有测试。这样您就不需要编写 N 个推导 - 只需一个方法。
关于oop - 单元测试不同的类层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041740/