2

背景

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

问题

嗯……我写了一个 200 行的测试用例,有 15 个测试,所有的测试都是针对一个只有一个方法的类。

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

问题

好的 TDD 在编写测试时在哪里划清界限?我到底应该测试什么,我可以安全地忽略什么?

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

OBS2:我一点也不怀疑单元测试。我实际上想从头开始将它们合并到我的项目中(只要我的 API 允许我)。我也只想完成这个项目,不要整天写测试。

4

4 回答 4

2

我会推荐以下书籍http ://www.amazon.com/dp/0321146530/?tag=stackoverfl08-20 来自亚马逊
除了书籍推荐,当你设计你的测试时,你一开始有很多工作,但是在某个时候,对于每个新代码,您的大部分测试逻辑都已经到位
我还建议确保您也专注于入侵预防(测试 SQL 注入、缓冲区 ovf 等的代码)
要记住的另一点是,当编写代码的人是编写测试的人时,您可能需要其他人尝试将其分解……不是针对所有内容,但至少针对其中的一部分。

于 2012-09-11T03:17:44.980 回答
1

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

于 2012-09-11T02:54:33.690 回答
1

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

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

于 2012-09-11T02:56:55.577 回答
1

我主要只为公共方法编写单元测试。当我认为某个方法以正确的方式工作时,我会停止为该方法编写测试,并且仅在发现错误时才为该方法添加更多测试。

于 2012-09-11T02:48:32.627 回答