静态方法returns空值
Static method returns empty value
我正在尝试为静态方法添加测试 class :
class SomeClass {
public static int getLoginPage() {
if (otherStaticMethod()) {
return Screen.FOO;
}
return Screen.BAR;
}
}
请注意,FOO 和 BAR 的值相差为零。
我的测试class :
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class})
public class SomeClass_getLoginPage {
@Test
public void testgetLoginPage() {
PowerMockito.mockStatic(SomeClass.class);
Mockito.when(SomeClass.otherStaticMethod()).thenReturn(true);
assertTrue(SomeClass.getLoginPage() == Screen.FOO);
Mockito.when(SomeClass.otherStaticMethod()).thenReturn(false);
assertTrue(SomeClass.getLoginPage() == Screen.BAR);
}
}
但是调用方法otherStaticMethod
时,方法getLoginPage
returns0
,这里应该returnFOO
或者BAR
。我该如何解决?
只需使用重载的 spy
方法而不是实际模拟整个 class.
PowerMockito.spy(SomeClass.class);
现在默认情况下,所有静态方法都将 运行 真正实现,直到您真正模拟其中之一。
你得到 0
的原因是因为 mockStatic
你模拟了所有静态方法,默认情况下调用 int
返回方法,将导致该值(如果未明确指定)。
我正在尝试为静态方法添加测试 class :
class SomeClass {
public static int getLoginPage() {
if (otherStaticMethod()) {
return Screen.FOO;
}
return Screen.BAR;
}
}
请注意,FOO 和 BAR 的值相差为零。
我的测试class :
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class})
public class SomeClass_getLoginPage {
@Test
public void testgetLoginPage() {
PowerMockito.mockStatic(SomeClass.class);
Mockito.when(SomeClass.otherStaticMethod()).thenReturn(true);
assertTrue(SomeClass.getLoginPage() == Screen.FOO);
Mockito.when(SomeClass.otherStaticMethod()).thenReturn(false);
assertTrue(SomeClass.getLoginPage() == Screen.BAR);
}
}
但是调用方法otherStaticMethod
时,方法getLoginPage
returns0
,这里应该returnFOO
或者BAR
。我该如何解决?
只需使用重载的 spy
方法而不是实际模拟整个 class.
PowerMockito.spy(SomeClass.class);
现在默认情况下,所有静态方法都将 运行 真正实现,直到您真正模拟其中之一。
你得到 0
的原因是因为 mockStatic
你模拟了所有静态方法,默认情况下调用 int
返回方法,将导致该值(如果未明确指定)。