0

我仍然在接受单元测试某些事情,我对我的 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() { //... }
}

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

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

我需要测试它们吗?

4

2 回答 2

3

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

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

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

  3. 如果将 null 传递给 addString(),则会引发 IllegalArgumentException(或任何应有的行为)

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

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

于 2013-01-21T17:35:55.923 回答
1

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

  1. 检查前置条件。
  2. 执行添加操作。
  3. 检查后置条件。
  4. 使用 remove 回滚添加操作。
  5. 确保风筝处于原始状态。

所有这些方法都将以这种方式进行测试。

于 2013-01-21T17:34:49.683 回答