如何在JMockit中模拟具有void返回类型的方法?

时间:2014-08-12 09:08:41

标签: java unit-testing testng jmockit

我使用TestNG和JMockit进行测试。我的代码是这样的:

public boolean testMethod(String a, String b) {
   //processing .....
   mockClass.mockMethod(a);
   //processing....
}

mockMethod():

Class MockClass {
     public void mockMethod(String a) {
        //some operations to mock
     }
 }

我根据这个问题使用MockUp:(How to mock public void method using jmockit?

我还在接受NPE。我究竟做错了什么?还有,是因为我这样使用它吗?

@Test
public void test() {
   new Expectations() {
       {
       //for statements preceding mockMethod()....
       new MockUp<MockClass>(){
           @Mock
           public void mockMethod(String a) {
               //do nothing
           }
       };
       }
   };
 }

我把它放在了Expectations()&amp;也使用NonStrictExpectations。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于void方法模拟您可以使Expectations没有任何结果,如下所示:

@Tested
private MyClassToBeTested myClassToBeTested;

@Injectable
private MockClass mockClass;

@Test
public void test() {

    new Expectations() {{
        mockClass.mockMethod(anyString);
    }};

    String inputA = "testValueA";
    String inputB = "testValueB";

    boolean result = myClassToBeTested.testMethod(inputA, inputB);

    assertEquals(true, result);
}