簡體   English   中英

如何為界面編寫測試用例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM