繁体   English   中英

如何用Java编写测试以检查JMock或JUnit中是否使用了对象?

[英]How to write a test in Java that checks if an object is being used in JMock or JUnit?

我正在为Java程序编写一些测试,并且需要测试是否将我的对象添加到List x的次数。

以下是假设的代码段。...

ObjectWithList objectWithList = new ObjectWithList();    

JMock context = new JMock();
ObjectInterface oInterfaceMock = (ObjectInterface)context.mock(ObjectInterface.class);

context.checking(new Expectations{{
    oneOf(oInterfaceMock).makeSureIamOnlyStoredSomewhereOnce();
}});

context.assertIsSatisfied(); // This will be successful if objectWithList calls add only 
//once. 

我不知道JUnit是否有更好的方法来测试它,任何帮助将不胜感激。 我一直在尝试Google搜索,并在Stack上搜索以前的问题,但是我没有运气。

非常感谢大家,任何帮助总是感激不尽!

我建议不要使用JMock。 您可以简单地编写一个计算列表包含一个对象的次数的函数:

public int getCount(List<?> list, Object object) {
  int count = 0;
  for (Object element : list) {
    if (object.equals(element)) {
      count++;
    }
  }
  return count;
}

还有其他可能的实现,但这显然是正确的。 接下来,您可以编写一个断言:

public void assertAppearsNTimes(List<?> list, Object object, int n) {
  if (n == getCount(list, object)) {
    return;
  }
  fail("Object " + object + " does not appear in list "
      + n + " times: " + list);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM