如何在Java中对添加到集合的单元测试进行单元测试?

时间:2013-01-21 17:31:13

标签: java unit-testing

我仍然接受单位测试某些事情的约定,对于一个相对简单的类我有一个关于我的JUnit测试的问题:

public class Kite {
    private List<String> strings = new ArrayList<String>();

    public void addString(String string) { //... }
    public void removeString(String string) { //... }
    public List<String> getStrings() { //... }
    public int getNumStrings() { //... }
}

在这种情况下,我想测试所有四种方法。然而,现在我写的测试都非常相似。它们(不包括删除)都遵循将基本结构添加到风筝的基本结构,然后检查风筝对象中的字符串数。

有没有更好的方法来测试这些“CRUD”类型的方法?

我需要测试它们吗?

2 个答案:

答案 0 :(得分:3)

最好在测试中更具体。对于addString(),您要测试:

  1. 您添加的字符串存在于集合中。

  2. 没有其他字符串作为副作用添加到集合中。

  3. 如果将null传递给addString(),则抛出IllegalArgumentException(或者应该是什么行为)

  4. 如果你两次传递相同的字符串,行为就是你想要的(可能是IllegalArgumentException,可能是无操作)

  5. 明白了吗?您希望为边缘情况添加测试,以及正常行为(有时称为“快乐路径”)。根据可能的输入,可能的输出和可以采用的代码路径来考虑您的测试。

答案 1 :(得分:1)

我会考虑编写一个模拟交易的测试:

  1. 检查前提条件。
  2. 执行添加操作。
  3. 检查后置条件。
  4. 使用remove。回滚添加操作。
  5. 确保风筝处于原始状态。
  6. 所有这些方法都将以这种方式进行测试。