簡體   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