如何解决Junit测试-如何模拟私有接口类型的类私有成员?
我使用一些模拟技术写了几句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()调用>上面的方法。 我无法更改查找课程。
我将感激小费(示例会更好)。
解决方法
基本上,该类在无法修改时很难进行测试。
使用PowerMock
的黑魔法,应该可以通过 name 来模拟事物,这意味着您提供了一个原始字符串来表示要覆盖的方法。请参阅here的操作方法。
但是正如所说的那样:这基本上是黑暗的魔法。这意味着将PowerMock添加到您的依赖项。将来会邀请其他人使用PowerMock。这带来了人们编写甚至更多难以测试的代码的风险。因为您知道有一个工具可以让您测试这些东西。而不是编写易于测试的代码。
当然:如果其他人更改了该类,例如重命名该方法,则测试会中断。
然后问自己:测试您不应该更改的课程有什么意义?如果您发现错误,该错误会一直存在吗?!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。