静态方法以及如何使用它们



在编写一些单元测试时,我发现我们使用了许多来自Utility类的静态方法调用。现在有了Mockito,我无法嘲笑他们的呼唤。那么,什么是最好的方法呢?

我知道在类中编写了公共方法,在类中我只返回静态调用。例如:

public String getName(File file){ return PDFUtil.getName(file); }

然后我在另一个方法中调用公共方法。现在我可以用Mockito和Spying模拟getName()方法了。

然而有两件事:

  1. 存在冗余。我可能在其他类中也使用PDFUtil.getName(File)方法,所以我应该只有一个类,并且应该只实现一次getName()
  2. 让我们考虑一下,我有4个不同的静态方法调用,并用4种不同的方法提取它们。这些都是我现在无法测试的方法。既然有人说不应该测试getter和setter等非常简单的方法,那么这可以吗

您可以直接使用PowerMock模拟静态方法。假设你有这样的课程:

public class StaticMethodClass {
   public String method() {
       return StaticMethodClass.staticMethod();
   }
   public static String staticMethod() {
      return "hello world";
   }
}

单元测试可能看起来像这样:

@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticMethodClass.class)
public class UnitTest {
   @Test
   public void test() {
      PowerMockito.mockStatic(StaticMethodClass.class);
      PowerMock.when(StaticMethodClass.staticMethod()).thenReturn("yeah");
      assertEquals("yeah", new StaticMethodClass().method());
   }
}

注意:我实际上并没有测试这个代码。以它为提示:-)

相关内容

  • 没有找到相关文章

最新更新