gpt4 book ai didi

unit-testing - 我应该为了方便重载而重复测试吗?

转载 作者:行者123 更新时间:2023-12-03 23:51:30 24 4
gpt4 key购买 nike

对方法进行方便的重载对我来说真的很常见。这是我可能会做的事情的一个例子:

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 。如果我重复测试,那么我的名字就会冲突”

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

当您拥有仅由参数签名区分的方法时,您不能随意使用它。因此,只需编写一些适合您所有便利功能的东西即可。

关于unit-testing - 我应该为了方便重载而重复测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com