2010-01-05 87 views
7

我必须承认,我经常为实践测试驱动开发而苦苦挣扎。尽管使用了Ruby on Rails,这使得TDD非常容易,因为它已经过时了,我发现编写测试太无聊了!这就像牙线使用牙线;我知道我应该这样做,但要努力争取更多的热情。什么技术可以用来使写作测试更有趣?

  • 你用什么技巧使写作测试变得有趣?例如,我看到的一个提示是围绕测试夹具数据发明一个小故事,而不是仅仅使用无意义的无关数据。
+12

每次测试失败时都要喝水 – 2010-01-05 14:57:26

回答

8

如果您先编写测试,它们是您的编码规范。

编写测试时,所有的想法都必须完成。 “应该它呢?” “我怎么知道它做到了?” “它有什么接口需要被嘲笑?”此外,如果您使用简单的命名约定(使用“shoulds”)构造测试,则可以更轻松地确定应该发生的事情。

请参阅http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx对此的一些想法。

如果你最后写测试,他们很无聊,因为你知道的代码工作。

1

如果你在编写测试时感到无聊,那么你正在测试错误的东西。当某些事情失败的时候,当我不明白某些事情或新事物出现时,我正在写测试。这样,我的测试绝不是徒劳的,也不符合“100%代码覆盖率”政策,我从来不会感到无聊。

3

写作否定测试通常比“晴天”更有趣。想想你可能会破坏你的课程的所有创新方式(传递null,值太大/小等)。

它不仅可以让你的大脑不同的角度去啃它也会让你的类更强大的,因为人们会空,大的数字,等等等等

0

首先,我想写叫它生产代码,所以我努力先写测试:不写任何没有失败测试的代码行。这并不总是可能的,但至少它迫使我写测试。

然后我试图打破我一直在使用边界测试,负的情况下,错误的API使用(如丢失或几个初始化调用)编写的代码...

而且我经常运行测试;最终的“所有测试通过”信息让我对迄今为止所写的内容感到满意......当我发现(并修复)一个错误时,我也很高兴。

有时,我正在为我的测试(出生日期,最喜欢的球员号码,电话号码...)使用的名称和号码开心。

0

如果您正确使用TDD,则应在编写代码之前编写测试。这应该是一个很好的测试,以确保您正在编写的代码有效,并且应该是一个小增量。

因此,它确实是发展的一部分。与编写一个单元测试相比,编写一个需要实现代码的函数有什么不同?

说,你觉得写测试乏味,就像是说:“我发现写I/O无聊..有什么我可以做,使之更加有趣吗?”或者“我觉得编写UI很无聊......”

那么,实际上编写任何类型的代码都可能很无聊,或者很有趣......但这更多的是开发者的功能而不是代码:)我的朋友被迫为一家公司编写代码,虽然他不是一个真正的程序员,他的评论是“我看不出你怎么能整天这样做!”

既然你是一名开发人员,我的感觉是,你不喜欢写代码,所以真正的问题是,你没有关注TDD,使测试开发的实部正常。尽管一个框架可能会试图做到这一点,但真正由您来正确地遵循这个过程(即先写测试)并真正将其与您的开发结合起来。

然后,它是真正的全面发展的一个微不足道的一部分,就像在代码检查,评论,格式化 - 所有这一切有些人可能会觉得“无聊”,但都是必要的。它不会打扰我们,因为它只是发展的一部分,我们觉得发展很有趣。

2

我很担心这听起来像一个代码味道

测试是否无聊,因为它们非常重复?

测试是否涵盖多次相同的事情? (即测试用例不只是一次测试一件东西,所以有很多重复测试的东西......?)

您可能感到无聊,因为测试是在错误的抽象层次上编写的,或者他们迫使你做很多没有必要的繁忙工作。

听起来好像需要进行重构或者至少抽象的东西,使每个测试表达一些什么新的或从代码的其余部分不同。

如果很多测试看起来很明显或乏味,那么您正在使用的抽象中缺少一些东西。

我会开始寻找在种,你觉得测试模式是无聊或繁琐和看看是否有不能做 - 比如创建一个小的测试框架,以帮助使这些测试更易于编写

检查时,你可能只需要删除一些不使用测试和清理命名 - 这样很明显,正是你需要测试,哪些是你可以依靠正在测试套件别处进行测试。

这是所有关于权衡。我认为值得重新评估你正在编写的测试类型,并看看可能有哪些替代方案。

1

有一种情况是无聊并不是完全不好。我认为它比常规代码更强于测试代码,但它也可能适用于测试。

当你不知道自己的代码在做什么时,当你不信任它,当你每次运行它或者释放它时,都会感到兴奋,这个小家伙坐在你的肩上尖叫着说:“不! 。当你在调试器中花费大量时间时;当你的代码太复杂,纠结和粗糙(不是一个好的方式)和可怕的。

无聊可能是兴奋的反面,并在那光明,无聊是好的。一步之后,在可预测的步骤之后的可预测的步骤,我们写出很好的简单可靠的工作代码。红 - 绿 - 重构。

好简单可靠的工作代码是我可以热心的事情。

相关问题