使用powerMock在构造函数中对void方法进行验证

时间:2015-08-12 21:24:50

标签: powermock powermockito

我需要为下面的类的构造函数编写一个测试用例,其中有一个我需要模拟和验证的void方法。如何验证是否使用powermockito调用了createToken?

public class Mytest{

 private Static string token;

 public Mytest(){
      if (token == null){
        createToken();
      }else
      {
        Log.error("log message");
      }
 }

 private void createToken() {
 // logic to create token
 }
}

测试课

public class TestMytest{

    //set token to null
     PowerMockito.spy(Mytest.class);
     final String token = null;
     Whitebox.setInternalState(Mytest.class,
            "token", token);

     //supress the  createToken() method        
     MemberModifier.suppress(MemberMatcher.method(
                Mytest.class, "createToken"));  

      new Mytest();

      **//verify(??????????)**              
}

1 个答案:

答案 0 :(得分:0)

您为什么要进行此验证?你实际上想要做的是检查是否已设置令牌? BTW为什么它甚至是静态的?您希望让该类的每个实例具有相同的令牌值吗?

为令牌字段添加getter或将其设置为private。

public class Mytest{

 final String token;

 public Mytest(){
        createToken();
 }

 private void createToken() {
 // logic to create token
 }
}

你可以像这样测试它(我不记得Matchers是否有这种方法,但你明白了):

assertThat(new Mytest().token, Matchers.notNull())