单元测试 – 我应该重复测试方便重载吗?

对于方法来说,这是很常见的.以下是我可能会做的一个例子:

public void Encode(string value) {
    Encode(value, DefaultEncoding);
}

public void Encode(string value, Encoding encoding) { 
    // ... 
}

我开始更加注意单元测试,像这样的测试方法会引入一些障碍,我不知道我相信自己单独面对.第一个也是最重要的问题是我是否应该重复测试这两个重载.例如,如果value为null,则两个方法都应该抛出ArgumentNullException;认识到可能有不同的逻辑和写两个测试是更正确的,还是假设方便重载没有自己的逻辑?

我也有次要的问题.我的命名方案与Roy Osherove的“MemberName_State_ExpectedResult”相同.如果我重复测试,那么我没有引入一些奇怪的命名约定,就会有冲突的名字.如果您重复测试,该如何处理?

“写两个测试,还是更好地假设方便重载没有自己的逻辑?

你的测试没有被“假设”定义.它们由您正在测试的类的设计定义.

你根本不做任何事情.

如果方便功能实际上是一个方便的功能,那么它必须做同样的事情,你必须编写一个测试,证明两种变体的方法实际上都是一样的.

如果“可能有不同的逻辑”(1)它不是一个方便的功能,(2)你必须编写一个测试,证明两个变体的方法实际上都是做正确的事情(可能与不同的逻辑相同,或者可能会有所不同,我不能从这个问题中解释出来.)

“MemberName_State_ExpectedResult.如果我重复测试,那么我有冲突的名字”

避免愚蠢的一致性问题.如果你有同样的方法与不同的签名,那么这个命名约定不是很好,是吗?忠实地坚持,尽管有问题,是一个愚蠢的一致性.

当您只有通过参数签名区分的方法时,您不能简单地使用它.所以只是做一些有用的所有方便的功能.

翻译自:https://stackoverflow.com/questions/1557069/should-i-duplicate-tests-for-convenience-overloads

转载注明原文:单元测试 – 我应该重复测试方便重载吗?