使用Mockito測試抽象類
想要測試一個抽象類,有什么好辦法可以不用真正繼承這個類就可以進行測試嗎?如果使用Mockito框架又要怎么做?
本文來自StackOverflow社區的問答。
問題:
我想測試一個抽象類。當然我可以寫一個繼承這個抽象類的mock。
我可以用mocking框架(我在用Mockito),而不是用手寫mock來做嗎?怎樣做?
采納答案:
以下的建議可以讓你不用創建“實際”的子類來測試抽象類 —— Mock就是子類。
使用Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS),然后就可以mock任何被調用的抽象method。
示例:
public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } public class MyTest { @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Mockito.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); } }
注意:這個方法的美妙之處就是只要抽象methods沒有被調用,你就不實現執行他們。
依小弟愚見,這比使用spy更加簡潔,因為spy需要實例,也就是說你必須為你的抽象類創建一個可以實例化的子類。
原文鏈接: http://stackoverflow.com/questions/1087339/using-mockito-to-test-abstract-classes 翻譯: ImportNew.com - Brook
譯文鏈接: http://www.importnew.com/15353.html
本文由用戶 n7w77 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!