如果您要为单元测试规定最低百分比的代码覆盖率,甚至可能作为提交到存储库的要求,那会是什么?
请解释您是如何得出答案的(因为如果您所做的只是选择一个数字,那么我可以自己完成所有这些;)
Alberto Savoia 的这篇散文准确地回答了这个问题(以一种非常有趣的方式!):
http://www.artima.com/forums/flat.jsp?forum=106&thread=204677
Testivus 测试覆盖率 一天一大早,一位程序员问大神: ‘我准备写一些单元测试。我应该瞄准什么代码覆盖率? 大神回复: “凄惨”担心覆盖率,写一些好的测试就行了。” 程序员笑了笑,鞠了一躬,离开了。 … 那天晚些时候,第二个程序员问了同样的问题。 大师指着一壶开水说道: “我应该在那个锅里放几粒米?” 程序员一脸疑惑,答道: ‘我怎么可能告诉你?这取决于您需要喂食多少人,他们有多饿,您提供的其他食物是什么,您有多少大米,等等。” “没错,”伟大的大师说。 第二个程序员笑了笑,鞠了一躬,然后离开了。 … 一天快结束的时候,第三位程序员过来问了同样的关于代码覆盖率的问题。 “百分之八十,不少于!”大师用拳头捶桌子,厉声回答。 第三个程序员笑了笑,鞠了一躬,然后离开了。 … 最后一个回答后,一位年轻的徒弟走到大师面前: 淕reat master,今天我无意中听到你用三个不同的答案回答了关于代码覆盖率的同一个问题。为什么? 大师从椅子上站了起来: “我和我一起去拿些新鲜的茶,让我们”谈谈。” 将茶杯倒满冒着热气的绿茶后,大师开始回答: ——第一个程序员是新手,刚开始测试。现在他有很多代码,没有测试。他还有很长的路要走;此时专注于代码覆盖率会令人沮丧且毫无用处。他最好习惯于编写和运行一些测试。他可以担心以后的报道。” ‘第二个程序员,另一方面,在编程和测试方面都有相当的经验。当我问她我应该在一个锅里放多少粒米时,我帮助她意识到所需的测试量取决于许多因素,而她比我更了解这些因素——这就是她毕竟代码。没有单一的、简单的答案,而且她足够聪明,能够处理事实并与之合作。” “你看,”年轻学徒说道,“如果没有一个简单的答案,那你为什么要回答第三个程序员‘百分之八十不少’?” 伟大的大师笑得如此大声,以至于他的肚子,证明他喝的不仅仅是绿茶,上下翻腾。 “第三个程序员只想要简单的答案——即使没有简单的答案——然后不管怎样都不会遵循它们。” 年轻的徒弟和头发花白的大师喝完茶,默不作声。
Testivus 测试覆盖率
一天一大早,一位程序员问大神:
‘我准备写一些单元测试。我应该瞄准什么代码覆盖率?
大神回复:
“凄惨”担心覆盖率,写一些好的测试就行了。”
程序员笑了笑,鞠了一躬,离开了。
…
那天晚些时候,第二个程序员问了同样的问题。
大师指着一壶开水说道:
“我应该在那个锅里放几粒米?”
程序员一脸疑惑,答道:
‘我怎么可能告诉你?这取决于您需要喂食多少人,他们有多饿,您提供的其他食物是什么,您有多少大米,等等。”
“没错,”伟大的大师说。
第二个程序员笑了笑,鞠了一躬,然后离开了。
一天快结束的时候,第三位程序员过来问了同样的关于代码覆盖率的问题。
“百分之八十,不少于!”大师用拳头捶桌子,厉声回答。
第三个程序员笑了笑,鞠了一躬,然后离开了。
最后一个回答后,一位年轻的徒弟走到大师面前:
淕reat master,今天我无意中听到你用三个不同的答案回答了关于代码覆盖率的同一个问题。为什么?
大师从椅子上站了起来:
“我和我一起去拿些新鲜的茶,让我们”谈谈。”
将茶杯倒满冒着热气的绿茶后,大师开始回答:
——第一个程序员是新手,刚开始测试。现在他有很多代码,没有测试。他还有很长的路要走;此时专注于代码覆盖率会令人沮丧且毫无用处。他最好习惯于编写和运行一些测试。他可以担心以后的报道。”
‘第二个程序员,另一方面,在编程和测试方面都有相当的经验。当我问她我应该在一个锅里放多少粒米时,我帮助她意识到所需的测试量取决于许多因素,而她比我更了解这些因素——这就是她毕竟代码。没有单一的、简单的答案,而且她足够聪明,能够处理事实并与之合作。”
“你看,”年轻学徒说道,“如果没有一个简单的答案,那你为什么要回答第三个程序员‘百分之八十不少’?”
伟大的大师笑得如此大声,以至于他的肚子,证明他喝的不仅仅是绿茶,上下翻腾。
“第三个程序员只想要简单的答案——即使没有简单的答案——然后不管怎样都不会遵循它们。”
年轻的徒弟和头发花白的大师喝完茶,默不作声。