使用assertTrue

时间:2011-10-14 07:52:15

标签: java assert

我有一个计数器列表,我想检查计数器的值是否为> 0: 你对我的代码有任何建议吗?

  ArrayList<Integer> list = new ArrayList<Integer>();

  int count1=0;
  int count2=0;

  for (int i = 0; i <x; i++)
  {
    if (action1)
    {
       count1++;
    }
    if (action2)
    {
       count2++;
    }
  }
  list.add(count1);
  list.add(count2);

我需要检查只有count1是!= 0

  assertTrue(list>0); ???

4 个答案:

答案 0 :(得分:2)

你忘了size()调用,它返回列表对象中元素的数量:

 assertTrue(list.size() > 0)

修改

循环遍历列表并检查列表中的每个值,如下所示:

for(int y : list) {
   assertTrue(y > 0);
}

答案 1 :(得分:1)

assetrts只有在通过将-ea传递给JVM argments启动java程序时才能工作。因此断言在正常情况下不起作用(除非直到jvm以-ea参数开头)。 java中的断言仅用于调试目的。在这种情况下,您应该考虑抛出IllegalStateException或其他一些适当的运行时异常。

答案 2 :(得分:0)

您的意思是列表大小是否大于0或列表中的计数器是否大于0?

对于前者,它将是:

list.size() > 0

如果是计数器,您只需检查已添加到列表中的计数器的值。

答案 3 :(得分:0)

由于您刚刚向list添加了两个元素,因此无需检查其大小是否为>0

如果您想检查列表中的所有元素是>0,那么您需要单独执行此操作:

for (int i : list) {
    assertTrue(i > 0);
}

或使用Guava

assertTrue(Collections2.filter(list, new Predicate() { 
     public boolean apply(Integer val) { return val > 0; }).count() > 0);