模拟一个静态方法,该方法使用传递给它的参数调用void方法

时间:2016-09-23 17:53:21

标签: java unit-testing mocking mockito powermock

我有getNameLength方法,我需要使用PowerMockito来模拟setName方法。我应该如何在setName emthod中模拟输入参数(sb,input),以便我可以使用模拟数据运行我的getNameLength测试用例?

public class ExampleClass{ 

  public static int getNameLength(StringBuilder sb ){
      setName(sb, "Test");
      return sb.toString().length();
  }

  public static void setName(StringBuilder sb, String input){
      sb.append(input);
  }
}

1 个答案:

答案 0 :(得分:0)

为什么你需要那套方法?

public static int getNameLength(StringBuilder sb ){
  sb.append(sb, "Test");
  return sb.toString().length();

}

与您的代码完全相同。

根据您的实际问题:您不需要模拟此类代码。您可以控制所有“输入”(进入方法的StringBuilder);你会得到一个价值。

所以你可以写下像

这样的简单断言
assertThat(getNameLength(new StringBuilder()), is(4));
例如

(它检查将“Test”添加到空构建器会产生一个4字符串字符串。)

最后:你的问题似乎也是:你不了解java的一些基本知识,特别是静态它的接缝。您的示例代码首先没有意义。因此:忘记嘲笑当下;更好地专注于更好地理解代码应该做的事情!