繁体   English   中英

Junit 测试 - 如何模拟私有接口类型的类私有成员?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM