PowerMockito verifyNew和verifyPrivate是互斥的吗?

时间:2017-05-05 13:03:26

标签: spring mockito powermockito

我有一个这样的课程

@Component  
public class TestClass {

  public void testMethod(){
      FinalClass f = new FinalClass("string");
      somePrivateMethod(f.getSomeString());
  }

  private void somePrivateMethod(String s){

  }
}  

正如您所看到的,它有一个公共方法和私有方法。在公共方法中,它实例化一个FinalClass实例,它是某个第三方库中的一个类,它是最终的。让我们说它就像这样

public final class FinalClass {

  private final String someString;

  public FinalClass(final String s) {
    someString = s;
  }

  public String getSomeString() {
    return someString;
  }
}

现在我正在为我的测试课编写单元测试。由于我必须验证最终类和私有方法,我使用的是powermockito。这就是我的测试类的样子

@RunWith(PowerMockRunner.class)
@PrepareForTest({TestClass.class, FinalClass.class})
public class TestClassTest {

  private TestClass testClass;
  private FinalClass finalClass;

  @Before
  public void setUp() {
    finalClass = PowerMockito.mock(FinalClass.class);
    testClass = spy(new TestClass());
  }

  @Test
  public void testSomething() throws Exception {
    whenNew(FinalClass.class).withAnyArguments().thenReturn(finalClass);

    testClass.testMethod();
    verifyNew(FinalClass.class);
    //verifyPrivate(testClass).invoke("testMethod");
  }
}  

工作正常。但问题是最后两个语句verifyNew和verifyPrivate是互斥的。我的意思是当我评论其中一个(无关紧要),测试通过。但是当两者都启用时,测试失败 有谁知道为什么会这样?

0 个答案:

没有答案