![](/img/trans.png)
[英]How can I write a junit test case for default methods of interface with zero lines of code
[英]How can I write a test case for an interface?
我需要為接口類獲得100%的代碼覆蓋率,如何編寫junit測試用例來測試接口。
public interface RetrieveOperation {
public RetrieveClassOfServiceProfileResponse
retrieve(String login, RetrieveClassOfServiceProfileRequest request)
throws Exception;
}
一個接口本身沒有做任何事情,所以沒有理由也沒辦法測試它。 測試實現接口的類是唯一有意義的。
一個例外是static
方法(可以很容易地測試,因為你不需要實例)和Java 8中的新default
方法。在這個例子中你沒有這樣的方法,但如果你有一個,您可以通過創建一個實現接口的最小類來測試它,方法是使用no-op實現所有非默認方法,然后使用它來測試默認方法。
如您所見,該界面中沒有任何內容可供測試。 您不能擁有,也不需要100%覆蓋純接口。
根據您要執行的操作,您可以像通常那樣為單個實現編寫單元測試。 為了強制執行接口的行為,通常可以編寫一個幫助程序類/方法來檢查任意實現的不變量,然后在實現的單元測試中進行測試,調用該幫助程序。
例如
public class RetrieveOperationVerifier {
public static void assertValid(RetrieveOperation impl) {
// assert impl behaves as expected
}
}
public class ConcreteRetrieveOperationImplTest {
// other tests
public void invariantTest() {
RetrieveOperationVerifier.assertValid(new ConcreteRetrieveOperationImpl());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.