你如何绕过静态方法调用?

时间:2015-05-15 01:14:37

标签: junit mocking mockito powermockito

我有这条线干扰了单元测试:

OtherClass.staticMethodThatWillErrorIfCalled().isAvailable();

如果它不是静态的,我可以模拟OtherClass,然后执行此操作:

Mockito.doReturn(null).when(mockedOtherClass).staticMethodThatWillErrorIfCalled();
Mockito.doReturn(true).when(mockedOtherClass).isGuiMode();

并且如果被调用它会出错会使我尝试使用powermockito徒劳无功。

我不确定我该怎么做。我想要做的就是跳过这一行(这是一个if检查)并继续,好像它已经返回true。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

我需要更多信息才能提供更具体的答案,但这正是我的想法......

首先告诉PowerMockito您将在OtherClass中模拟静态方法。

@RunWith(PowerMockRunner.class)
@PrepareForTest(OtherClass.class)

这些是单元测试类中的类级别注释。

然后模拟在调用该方法时要做什么。

PowerMockito.mockStatic(OtherClass.class);
Mockito.when(OtherClass.isAvailable()).thenReturn(Boolean.TRUE);

在单元测试的@Before方法中执行此操作。