Unit testing 单元测试方法是否应超过200行?

Unit testing 单元测试方法是否应超过200行?,unit-testing,language-agnostic,Unit Testing,Language Agnostic,写一个很长(超过200行)的测试方法是否太糟糕了?或者我应该把它分解成更小的方法吗?总的来说,你不应该创建任何200行长的方法。如果你能打破它,就去做 你排200行干什么?单元测试应该是测试小的代码单元。这200行主要是断言吗?如果是这样的话,那就可以了 关键的问题是——有人能很快理解这个方法在做什么,还是很难让你了解 “程序的编写主要是为了让人阅读,只是为了让机器运行。”(Abelson&Sussman,《计算机程序的结构和解释》) 200行听起来太长了。单元测试方法与其他方法一样。您应该尽可

写一个很长(超过200行)的测试方法是否太糟糕了?或者我应该把它分解成更小的方法吗?

总的来说,你不应该创建任何200行长的方法。如果你能打破它,就去做

你排200行干什么?单元测试应该是测试小的代码单元。这200行主要是断言吗?如果是这样的话,那就可以了

关键的问题是——有人能很快理解这个方法在做什么,还是很难让你了解

“程序的编写主要是为了让人阅读,只是为了让机器运行。”(Abelson&Sussman,《计算机程序的结构和解释》)


200行听起来太长了。单元测试方法与其他方法一样。您应该尽可能使用重构。这将提高代码的可读性

编辑-由于您的测试很长,它也可能会显示一些测试气味

通常在我写的测试中,我喜欢快速地看到。如果你有超过200行的数据,可能很难分辨哪一位在哪里。

我会质疑任何接近200行的方法。分解它会增加固有的代码可读性,可能有助于更准确地识别故障区域,或者像猫一样发出呼噜声:当然,这取决于所使用的方法、语言和测试框架


哦,它可能会:-)长方法是不可取的。它们通常表明一种方法做得太多了


这同样适用于单元测试,如果不是更多的话。理想情况下,您应该能够通过查看一个单元测试立即了解它在测试什么。

一个单元测试应该测试一件事情,并且您应该避免单元测试中的逻辑,以避免编写测试单元测试的代码

话虽如此,如果这200行中的大多数是设置代码,以确保数据的特定状态,从而重现难以测试的边缘案例错误,那么这可能是唯一的方法


但是,如果可能的话,您应该尽量减少单元测试中的行数。当它们很长时,很快就会变得非常脆弱(修改后很容易断裂)。

你问是否应该将其分解,这表明你可以将其分解。我认为,尤其是单元测试应该尽可能小,并且每个测试只测试软件的一个方面。

200行断言(我从未见过或写过任何东西在一个测试中得出接近这个断言数量)。如果是这样的话,那么这个测试听起来像是一个迫不及待的测试,@RichardOD-几乎可以肯定地同意,但是很难对这样的事情设置行数限制。你链接到的文档看起来很棒-把它放在你的答案中,我会投赞成票!断言(1,1+0);断言(1,0+1);断言(2,2+0);断言(2,1+1);断言(2,0+2)。。。。尽管在这一点上,我认为另一个基本问题已经(或应该)被揭示出来。实际上这本书很棒(这和单元测试的艺术是我最喜欢的两本单元测试书)!我已经投了赞成票,因为你剩下的答案是好的。我正在测试不同的更新场景,所以我正在生成数据集,调用更新方法(测试目标),然后在它后面进行断言。每个更新场景大约有15行。我有至少20个更新场景列表,但是你可以(我会)将排列部分提取到它自己的方法中,这样整个测试就很容易阅读了在东西上键入名称。我从来没有见过200行来获得特定的状态,但我见过50或60行这样做。老实说,这真的是单元测试而不是功能测试吗?