JUnit测试 - 我测试什么?

时间:2009-12-21 08:55:13

标签: java unit-testing junit

如果我有一个返回ArrayList

的基本访问器方法

我到底测试的是什么? 在测试时我非常缺乏经验。

6 个答案:

答案 0 :(得分:2)

这取决于您期望该方法的行为方式。例如:如果某人调用了该方法并更改了检索到的列表,您是否希望在下次调用getter时显示这些更改?无论哪种方式,测试该行为。当列表为空时,getter会返回什么?空或空列表?这也应该进行测试。

答案 1 :(得分:1)

有趣的问题:

How much should a unit test "test"

How to use Junit and Hibernate usefully

What should not be unit tested

编辑:

在Stack Overflow上添加了一些关于JUnit和单元测试的最喜欢的问题。

答案 2 :(得分:1)

通常为访问者编写显式的Junit测试通常有点矫枉过正(你在测试什么?return foo;)。使用code coverageclover工具可以帮助您首先在最复杂的代码中定位测试工作。

答案 3 :(得分:0)

始终记住,测试代码也是代码,对于每1000行代码,您至少会产生4个错误。因此,测试什么不起作用,不要为不可能破坏的东西编写测试(比如IDE生成的代码)。如果确实破了,请写一个测试:)

答案 4 :(得分:0)

通常,单元测试应该测试您的方法是否按照它所声明的方式执行。

如果你的方法返回一个arraylist,你的基本测试就是断言在调用arraylist时确实会返回它。

测试的下一个细节是检查是否正确构造了arraylist?是否正确填写了您期望的值?如果它应该是一个空列表,是这样吗?

现在你有“晴天”的情况(即方法在正常条件下工作)你应该添加一些负面(或“下雨天”)条件,如果合适的话。如果方法接受数组的长度,如果传入负数或int.Max等,该怎么办。

正如另一个答案所述,这对于一个简单的访问器来说可能有些过分,但这些原则适用于您需要编写的任何单元测试。

答案 5 :(得分:0)

取决于您的要求。你可以测试一下:

  1. 如果返回值不为空
  2. 如果返回的集合不为空
  3. 如果返回的集合是可修改/不可修改的
  4. 如果返回的集合已排序
  5. 如果返回的集合包含所有预期值
  6. 如果访问者方法没有抛出运行时异常
  7. 但是,正如我所说,这取决于要求,它取决于您在调用访问者时所期望的“种类”集合。也许您允许将列表设置为null,但创建一个空列表。当您将列表设置为null时,测试可以确保您确实得到一个空列表。

    希望有一个想法给你带来帮助!