如何用Java编写一个测试,检查对象是否正在JMock或JUnit中使用?
我正在为一个Java程序编写一些测试,我需要测试我的对象是否被添加到列表中x次 下面是一个假设的代码片段如何用Java编写一个测试,检查对象是否正在JMock或JUnit中使用?,java,testing,junit,jmock,Java,Testing,Junit,Jmock,我正在为一个Java程序编写一些测试,我需要测试我的对象是否被添加到列表中x次 下面是一个假设的代码片段 ObjectWithList objectWithList = new ObjectWithList(); JMock context = new JMock(); ObjectInterface oInterfaceMock = (ObjectInterface)context.mock(ObjectInterface.class); context.checking(new
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 int getCount(列表,对象){
整数计数=0;
for(对象元素:列表){
if(object.equals(元素)){
计数++;
}
}
返回计数;
}
还有其他可能的实现,但这一个显然是正确的。接下来,您可以编写断言:
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);
}
public void资产外观(列表、对象、int n){
if(n==getCount(列表,对象)){
回来
}
失败(“对象”+对象+”未出现在列表中”
+n+“次:“+列表);
}
您想调用一个方法X
,该方法用对象Y
n次填充objectWithList
?方法X
不会出现在代码段中,对象Y
可能是oInterfaceMock
,但它可以是一个简单的对象,无需对其进行模拟。我理解你的问题了吗?然后将方法X
的调用添加到代码段中,并指出objectWithList
是如何在该方法中填充的(它是X
的参数还是X
s对象的字段)。