我有一個無效的方法,做一些事情。我不在乎它在我的單元測試課上做了什麼。然而,當我從我的單元測試類調用它並引發我的測試用例失敗時,它會拋出異常。如何忽略使用easymock的私有void方法拋出的異常?
我該如何使用EasyMock模擬此對象,以便在調用這個void方法時忽略它在單元測試中的作用?
例如,假設該對象被稱爲myObject
,並且它有一個名爲doSomething()
的無效方法。 EasyMock不讓我使用'expect',因爲它是一個無效的方法,它不返回任何內容。但是當我在測試用例中調用這個方法時,它會拋出一個異常(我想完全忽略它)。
我知道這可以通過使用mockito或其他庫來實現,但我想使用EasyMock。
UPDATE
所討論的方法是它獲取由其他進程稱爲私人無效方法。我不能直接調用它,但我仍然想忽略該私有無效方法引發的異常。
我已經嘗試使用漂亮的模擬,如下建議。
MyObject obj = EasyMock.createNiceMock(MyObject.class);
EasyMock.replay(obj);
然後我在另一個包含它作爲私有變量的對象中設置此obj。
MyObject2 obj2 = new MyObject2();
obj2.setMyObject(obj);
並且我調用一些方法在內部調用private void方法。
obj2.methodThatCallsPrivateVoidMethod();
並且這不起作用。
如果你想要模擬的方法是私人的,那麼你將無法用EasyMock模擬它,你需要使用[PowerMock](https://code.google.com/p/powermock/ )。話雖如此,從你問題的其餘部分看,在MyObject上有一個可訪問的方法(public,protected,default),你可以模擬出正確的方法嗎? – 2014-10-20 07:00:55
是的,但公共方法是我想單元測試的東西。這只是爲了讓我可以忽略private void方法的結果(特別是在本質上存在的異常) – user3590506 2014-10-20 17:52:29
在這種情況下,您必須使用PowerMock生成MyObject的部分模擬來模擬私有方法。這是可能的,但有點尷尬。 [這是它的文檔](https://code.google.com/p/powermock/wiki/MockPrivate) – 2014-10-21 07:16:01