JMockit验证是否调用了私有方法

波城(Pau Casademont)

我是一个公共方法,我想验证是否调用了具有模拟参数的私有方法。我发现的所有答案都使用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
        }};
   }
达斯

您可以使用Powermock模拟和验证私有方法。

请检查https://github.com/powermock/powermock/wiki/MockPrivate

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章