Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在测试中使用实现的方法是好主意还是坏主意?_C#_Unit Testing_Testing - Fatal编程技术网

C# 在测试中使用实现的方法是好主意还是坏主意?

C# 在测试中使用实现的方法是好主意还是坏主意?,c#,unit-testing,testing,C#,Unit Testing,Testing,我正在测试一个方法,在某些情况下返回一个新对象,在某些情况下返回一个已更新的现有对象 我有一个方法可以在默认状态下创建一个新对象,所以我想知道在新方法的测试中使用这个方法来检查它是否是一个新对象是否是一个好主意,这样我就可以重用代码,而不是逐个检查所有的属性,因为我可以使用另一个方法来比较两个对象 但是我怀疑在测试中使用这种方法是否是个好主意 谢谢。在单元测试中,通常使用助手类或工厂来生成和测试对象,以提高代码的可维护性。(少吃点)我觉得这不是什么“单位”。考虑重新测试。听起来您的测试比您应该做

我正在测试一个方法,在某些情况下返回一个新对象,在某些情况下返回一个已更新的现有对象

我有一个方法可以在默认状态下创建一个新对象,所以我想知道在新方法的测试中使用这个方法来检查它是否是一个新对象是否是一个好主意,这样我就可以重用代码,而不是逐个检查所有的属性,因为我可以使用另一个方法来比较两个对象

但是我怀疑在测试中使用这种方法是否是个好主意


谢谢。

在单元测试中,通常使用助手类或工厂来生成和测试对象,以提高代码的可维护性。(少吃点)

我觉得这不是什么“单位”。考虑重新测试。听起来您的测试比您应该做的要多。我们倾向于从非常细粒度的测试开始,然后逐渐转向测试功能。如果第一种方法a)经过测试,b)非常简单,那么将其作为测试的一个步骤就可以了。可能的问题是,您编写的测试并不测试第一个方法,但它们确实依赖于第一个方法。这意味着您的测试与生产代码相耦合。但我们编写的大多数测试都是如此。如果我们能找到不这样做的方法,那就太棒了,但是如果我们只是编写可测试的代码和单元测试,那么大多数时候我们就领先了。我希望我能说我在写这个级别的测试。我已经要求人们表达他们对此的想法。他们倾向于说他们理解,然后用例子表明他们不理解。我认为这意味着有足够的学习和成长空间。也许我们曾经编写过不稳定、未经测试的代码。现在我们从编写单元测试中获得了各种好处。这是一个巨大的胜利。这只是意味着,像往常一样,还有另一个层次。你可以做到。但是如果“在默认状态下创建新对象的方法”有bug,会发生什么呢?如果测试中的方法使用相同的“在默认状态下创建新对象的方法”来创建一个返回的新对象,然后针对由相同方法创建的对象进行断言,那么您就错过了一个bug。如果不是这种情况,那么它应该是ok的。如果测试验证了创建默认对象的方法,那么它也应该是ok的