我正在为 Java 程序编写一些测试,我需要测试我的对象是否被添加到列表中 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 是否有更好的测试方法,如有任何帮助,我们将不胜感激。我一直在尝试进行谷歌搜索,并在 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);
}
关于java - 如何用 Java 编写测试来检查对象是否正在 JMock 或 JUnit 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009644/