我应该写什么样的测试?

时间:2012-09-11 01:18:52

标签: java unit-testing tdd

背景

我正在使用Java,slick2d和其他框架编写一个小游戏。 Slick2d不易编写单元测试,但这是我无法解决的问题。该项目的目标之一是进行一些测试覆盖,但......

问题

嗯......我写了一个200行的测试用例,有15个测试,而且只用一个方法编写了一个类。

我测试了我能想到的一切:无效的参数,无效参数的组合,交换方法调用等等。我知道我无法测试所有内容,而且我知道我不需要从库中测试代码(Java API,slick2d API,logback API等),但即使在这种情况下,我也可以疯狂的测试,我相信如果我为我创建的每个方法编写15个测试,我就无法完成它。所以......

问题

良好的TDD在写作测试中划线?究竟应该测试什么,我可以放心地忽略什么?

OBS:对于那些你想知道的人,我编写15个测试的单方法类是将一些字符串加载到数组中,并且它的方法将检索字符串,给定行和文件作为参数。

OBS2:我根本不对单元测试持怀疑态度。我实际上想要从头开始将它们合并到我的项目中(无论何时我的API允许我)。我也想完成这个项目,并且不会整天都在写测试。

4 个答案:

答案 0 :(得分:2)

我会建议以下本书http://www.amazon.com/dp/0321146530/?tag=stackoverfl08-20 来自亚马逊 除了书籍推荐之外,在设计测试时,您在开始时需要做很多工作,但在某些时候,对于每个新代码,大多数测试逻辑已经就位。<登记/> 我还建议你确保你专注于入侵防御(测试SQL注入的代码,缓冲区ovf等)
要记住的另一点是,当编写代码的人是编写测试的人时,你可能希望别人试图将其分解......不是为了一切,但至少部分内容。

答案 1 :(得分:1)

我主要是为公共方法编写单元测试。当我认为它以正确的方式工作时,我会停止为方法编写测试,如果我发现了错误,只会为该方法添加更多测试。

答案 2 :(得分:1)

如果您正在谈论TDD,请记住该方法首先是测试,因为测试将推动您的设计以及最终API的外观。如果您使用这种方法,那么该行将更清楚地停止编写新测试的位置。

答案 3 :(得分:1)

好吧,在适当的TDD中,你实际上首先要编写你想要添加的新功能的测试。最初它会失败,直到你完全实现了你所追求的,以及验证行为确实正确的断言。

因此,您只需继续添加更多测试,因为您发现自己需要新功能。这样,测试就会驱动你编写的代码,而不是反过来。