为什么这个陈述没有被eclemma完全覆盖?

时间:2010-12-14 18:05:12

标签: java code-coverage emma

我在Eclipse中使用EclEmma(更具体地说,是RSA 8)。我的代码中有以下声明:

public static boolean isEmpty(Collection collection) {
    return (collection == null) || collection.isEmpty();
}

我有以下测试:

@Test public void isEmpty_nullCase() {
    assertTrue(CollectionUtil.isEmpty(null));
}
@Test public void isEmpty_listCase() {
    assertTrue(CollectionUtil.isEmpty(new ArrayList()));
}

但由于某种原因,该声明显示为黄色。我不测试它的哪一部分?

谢谢, 彼得

2 个答案:

答案 0 :(得分:2)

具有值的ArrayList如何,因此不为空?

答案 1 :(得分:0)

添加以下测试用例:

@Test
public void checkNonNullNonEmpty(){
   Assert.assertFalse(CollectionUtil.isEmpty(new ArrayList<String>(){
    {
      add("blah blah blah....!");
    }
  });
}

您只测试了真实条件。理想情况下,return (collection == null) || collection.isEmpty(); 语句有4种可能的组合。第一个条件可以是T / F,第二个可以是T / F.总共有4种可能性。你只有3个。上述测试用例将涵盖非null非空的可能性。