测试抽象类的具体方法

8

我该如何为抽象类的具体方法设计和组织测试?特别是在.NET中。

6个回答

9

您需要创建一个子类来实现抽象方法(使用空方法),但不要实现任何具体方法。这个子类只用于测试(永远不应该出现在生产代码中)。在单元测试中忽略覆盖的抽象方法,专注于具体方法。


2
此外,如果你最终有很多这样的测试(超过2或3个),你应该考虑使用一个模拟框架,如Rhino.Mocks或Moq(免费)或TypeMock(商业),并进行“PartialMock”,这将为您自动化此过程。 - chadmyers

3
使用Rhino Mocks,它可以在运行时生成抽象类的实现,并且您可以调用非抽象方法。

1

首先想到的是在具体的子类中测试这些方法。


0

有什么理由不将其包含在一个实例的测试中呢?

如果这行不通,你可能可以创建一个子类,专门用于测试,没有自己独特的功能。


一个原因可能是我们没有定义具体的类,只有抽象的类。或者,当测试失败时,知道这不是由于其中一个抽象方法引起的也是很好的。 - Blair Conrad

0

我总是使用存根/模拟对象


0

你需要定义并创建一个继承自抽象类的具体测试类。通常它将是一个轻量级的桥接器,仅仅是通过调用而已。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接