Java测试框架系列:PowerMock使用系列-8:委托给其他Runner和使用引导程序

本文详细介绍了如何在Java测试中使用PowerMock框架,包括使用@PowerMockRunnerDelegate进行委托,利用JUnit Rule引导程序以及通过Java代理启动。文章提供了不同场景下与Maven、JUnit和TestNG的集成示例,并提到了一些限制和注意事项。
摘要由CSDN通过智能技术生成

月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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值