如何为界面编写测试用例?

时间:2015-11-10 20:12:02

标签: java junit

我需要为接口类获得100%的代码覆盖率,如何编写junit测试用例来测试接口。

public interface RetrieveOperation {
  public RetrieveClassOfServiceProfileResponse
      retrieve(String login, RetrieveClassOfServiceProfileRequest request)
      throws Exception;
}

2 个答案:

答案 0 :(得分:2)

界面本身没有做任何事情,所以没有理由也没办法测试它。它只对测试实现接口的类有意义。

例外情况是static方法(可以轻松测试,因为您不需要实例)和Java 8中的新default方法。您不需要在这个例子中有一个这样的,但如果你有一个,你可以通过创建一个实现接口的最小类来测试它,通过使用no-op实现所有非默认方法,然后使用它来测试默认方法。

答案 1 :(得分:1)

如您所见,该界面中没有任何内容可供测试。您不能拥有,也不需要100%覆盖纯接口。

根据您尝试做的事情,您可以像通常那样为单个实施编写单元测试。为了强制执行接口的行为,通常可以编写一个帮助程序类/方法来检查任意实现的不变量,然后在实现的单元测试中测试调用该帮助程序。

E.g。

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());
  }
}