我需要为接口类获得100%的代码覆盖率,如何编写junit测试用例来测试接口。
public interface RetrieveOperation {
public RetrieveClassOfServiceProfileResponse
retrieve(String login, RetrieveClassOfServiceProfileRequest request)
throws Exception;
}
答案 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());
}
}