c# - 子类的单元测试

标签 c# unit-testing class-hierarchy

假设我们有这个 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/

相关文章:

java - 简单的PowerMock测试报错,android studio项目

java - 空指针异常和带有继承和子类的突然 IOStream 闭包

java - 模板类型转换

java - Java 是否提供了一种允许从层次结构中的包进行特殊访问的方法?

javascript - 在 jasmine 中监视 jQuery $ ('...' ) 选择器

.net - DeploymentItemAttribute 的相对路径根是什么?

c# - 具有通用集合的 WCF REST 服务

c# - 首次登录后如何强制更改密码

c# - 如何在 ASP.NET 中动态创建的 TreeView 中添加 URL?

c# - Visual C# 速成版中的 Rss 阅读器