如何解决JMockit 验证是否调用了私有方法
我正在测试一个公共方法,我想验证是否调用了一个模拟参数的私有方法。 我找到的所有答案都使用 invoke 方法,但自 JMockit v1.36 以来已被删除
public class ClasstoTest{
public void methodTotest(){
DependencyClass abc = new DependencyClass();
if(privateMethod1()){
privateMethod2(abc);
}
}
private boolean privateMethod1(){ return true; }
private void privateMethod2(DependencyClass abc){ abc.doStuff(); }
}
public class testClasstoTest{
@Mocked
DependencyClass abc;
@Tested
ClasstoTest testedClass;
@BeforeEach
public void setUp() {
testedClass = new Classtotest();
}
@Test
public void testMethod(){
new MockUp<ClasstoTest>() {
@Mock
private boolean privateMethod1() {
return true;
}
};
testedClass.methodTotest();
new FullVerificationsInorder() {{
abc = new DependencyClass();
//Check here if privateMethod2(abc) gets called once
}};
}
解决方法
你有两种方法:
- 要将您的方法的范围从私有升级到包私有,然后您的方法将在测试中可见。
- 重构您的代码并将私有方法封装到 Predicate 中,然后您可以分别测试您的主要方法和 Predicate。
您无法通过 Junit 测试私有方法。
,您可以使用 Powermock 来模拟和验证私有方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。