[英]Junit test - how to mock class private member of type of private interface?
我使用一些模拟技术编写了很少的junit。 但卡在这里:
public class Lookup {
private LookupMethod lookupMethod;
private interface LookupMethod {
String lookup(String input);
}
public String treatString(@Nullable String input) {
...
String lookupResult = lookupMethod.lookup(lookupInput);
...
}
}
我正在对treatString()方法进行单元测试,并研究如何在上面的treatString()方法中模拟lookupMethod.lookup()调用。 我无法更改Lookup类。
我会感谢提示(示例会更好)。
基本上,当你不能修改这个类时,它很难测试。
使用PowerMock
的黑暗魔法,应该可以通过name来模拟事物,这意味着您提供一个原始字符串来表示要覆盖的方法。 在这里查看如何做到这一点。
但正如所说:这基本上是黑魔法。 这意味着将 PowerMock 添加到您的依赖项中。 将来会邀请其他人使用PowerMock。 它携带的人写更难以测试代码的风险。 因为你知道有一个工具可以让你测试那些东西。 而不是编写易于测试的代码。
当然:如果其他人更改了该类,例如重命名该方法,那么您的测试就会中断。
然后,问问自己:测试一个你不应该改变的类有什么意义? 如果你发现了一个错误,它会留在里面吗?!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.