对从抽象类B派生的类A进行单元测试

用户11081980

我需要对从抽象类A派生的类B进行单元测试,该类具有一些实现。

我的问题是:您应该对父类型(例如abstract ClassB)还是子类/派生类型(例如ClassA)进行单元测试

Pressacco

编写单元测试的部分目的是为了维护代码的完整性。帕累托原则(80/20规则)一致,要测试的实现细节通常在派生类型中。所以...

情境

典型场景

应该派生类型/子类编写单元测试,但是单元测试实现应按照SOLID Liskov替换原则引用父类型

“程序中的对象应该可以用其子类型的实例替换,而不会改变该程序的正确性”

换句话说,您正在测试Dog,但是单元测试源代码将引用Mammal

Mammal pet = new Dog();
pet.Speak();

非典型场景

如果基本类型(例如Mammal)包含要进行单元测试的可执行代码,那么您将必须创建派生类型(例如Dog的实例例如,您可以执行以下操作:

[TestCase]
public class MammalTest
{
    [TestMethod]
    AbstractMethodNameHere_YourTestCase_YourExpectedResults()
    {
       Mammal pet = new Dog();

       // Here you could test the method that has been implemented 
       // in the base class.
       Assert.IsTrue(pet.AbstractMethodNameHere());
    }
}

重申一下,您通常不会编写特定于基类的测试,因为实现细节通常在派生类型中。

附加阅读

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章