1

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

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(??????????)**              
}
4

1 回答 1

0

为什么要进行此验证?您实际上想要做的是检查令牌是否已设置?顺便说一句,为什么它甚至是静态的?您想让类的每个实例具有相同的令牌值吗?

为 token 字段添加一个 getter 或使其包私有。

public class Mytest{

 final String token;

 public Mytest(){
        createToken();
 }

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

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

assertThat(new Mytest().token, Matchers.notNull())
于 2015-09-12T09:24:26.280 回答