月20日 阅读 8
一:使用 @PowerMockRunnerDelegate
需要源代码的加我QQ(3177181324)
从PowerMock 1.6.0可用的功能。
从PowerMock 1.6.0版本以来,支持将测试执行委托给另一个JUnit runner而不使用JUnit Rule. 这将实际的测试执行留给您选择的另一个runner。 例如,测试可以委托给“SpringJunit4ClassRunner”,“Parameterized”或“Enclosed”runner。 用法示例:
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
@PrepareForTest({FinalDemo.class, PrivateFinal.class})
public class FinalDemoTest {
@Parameterized.Parameter(0)
public String expected;
@Parameterized.Parameters(name = "expected={0}")
public static Collection<?> expections() {
return java.util.Arrays.asList(new Object[][]{
{"Hello altered World"}, {"something"}, {"test"}
});
}
@Test
public void assertMockFinalWithExpectationsWorks() throws Exception {
final String argument = "hello";
FinalDemo tested = mock(FinalDemo.class);
when(tested.say(argument)).thenReturn(expected);
final String actual = "" + tested.say(argument);
verify(tested).say(argument);
assertEquals("Expected and actual did not match", expected, actual);
}
}
参考
二:使用 JUnit Rule 引导程序
从 PowerMock 1.4 时功能可用。
从 1.4 版开始,可以使用 JUnit Rule 而不是使用 PowerMockRunner 和 RunWith 注解来引导 PowerMock 。这允许您在使用其他 JUnit 运行程序的同时仍然受益于 PowerMock 的功能。您可以通过指定:
@PrepareForTest(X.class);
public class MyTest {
@Rule
PowerMockRule rule = new PowerMockRule();
// Tests goes here
...
}
和 Maven 一起使用 PowerMockRule
你需要依赖这些项目:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-r