假设我们有这个 super 简单的类层次结构:
public class SomeMath
{
public int Add(int x, int y)
{
return x + y;
}
}
public class MoreMath : SomeMath
{
public int Subtract(int x, int y)
{
return x - y;
}
}
在为 MoreMath
类编写测试时,是否应该为 Add
方法编写测试?或者我应该只在测试 SomeMath
类时关心该方法吗?更一般地说:我应该测试一个类的所有方法,还是应该只测试"new"方法?
我可以为双方提出一些理由。例如,当测试所有方法时,您最终会多次测试同一件事,这不是很好,而且会变得乏味。但是,如果您不测试所有方法,SomeMath
中的更改可能会破坏 MoreMath
的用法?这也是一件坏事。我想这可能也取决于具体情况。就像它是否扩展了我可以控制的类。但无论如何,我是一个完全的测试新手,所以我很想知道有哪些人比我更聪明:-)
最佳答案
通常我不会在子类中测试行为,除非子类改变了父类中预期的行为。如果它使用相同的行为,则无需对其进行测试。如果您打算对父类进行重大更改但子类仍然需要旧行为,那么我会首先在子类中创建测试以定义其所需的行为,然后我会在父类测试和后续测试中进行更改代码更改。这遵循 YAGNI 原则——您将不需要它——并延迟子测试的实现,直到它们真正有目的为止。
关于c# - 子类的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782994/