如何解决如何在Java中的injectmocks注释类下模拟私有方法
我在注入的模拟注解类中遇到有关模拟私有方法的问题。我的代码就像下面的
public class foo {
@Autowired
fooBean fooBean;
public void method1() {
this.method2();
}
private void method2() {
fooBean.someMethod();
system.out.println("Hello world");
}
}
当我使用powermockito创建UT类时,foo类应该是@injectMocks,因为fooBean应该作为模拟类注入。但是,当foo类标记为@injectMocks时,无法使用“ doReturn(“ xxx”)。when(foo,“ method2”)“”来模拟其私有方法,这将引发错误,无法应用于injectMocks。
已被阻止。不知道如何继续。
解决方法
TLDR;您不能使用InjectMocks模拟私有方法。
您应该模拟实现细节,并专注于应用程序的预期行为。同样重要的是,私有方法不要在Java项目中执行核心测试逻辑。
着重编写函数,以使测试不受私有方法的阻碍。如果不可能的话,值得问一下私有方法在做什么,这对您的功能如此重要,以及为什么必须私有。
还有其他测试私有方法的方法-您可以使用Reflections java library,这可以让您在运行时停止方法并将特定的值注入其中。但是,这再次是为不需要存在的问题找到解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。