1

我在 pararell 中使用 @Runwith(Enclosed.class) 运行 PowerMock 时遇到问题。

我的测试类结构:

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

public class ut_QueueBuild{

    @Test
    public void someTest(){}

    public static InnerTestClass{

        @Test
        public void someInnerTest(){}
    }

}

在使用 powerMock 之前,我刚刚使用过:

@RunWith(Enclosed.class)
public class unitTestClass {
...

但是由于我使用的是 PowerMock,所以无法在 pararell @Runwith(PowerMockRunner.class) 和 @Runwith(Enclosed.class) 中使用

我该如何解决这个问题?

非常感谢 !

4

2 回答 2

1

实际上,您可以使用PowerMockRunnerDelegate并执行以下操作:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Enclosed.class)
@PrepareForTest(MyStaticClass.class)
public class ut_QueueBuild{

    @Test
    public void someTest(){}

    public static InnerTestClass{

        @Test
        public void someInnerTest(){}
    }

}

这也适用于其他跑步者,例如Parametrized.

于 2016-11-04T08:47:00.583 回答
0

JUnit4 只支持一个@RunWith 注解,JUnit4 的@RunWith 注解不接受多个runner。参考:project13

可能重复的问题,但这是来自这个StackOverflow 问题的答案@Matthew Farwell

不,您要么需要:

使用一个并创建一个测试基类来执行您希望其他跑步者做的事情。将您的测试分成多个测试,每个测试使用不同的运行器。

于 2013-11-10T10:50:12.897 回答