使用Enclosed类运行PowerMock

时间:2013-10-15 18:55:24

标签: java unit-testing annotations junit4

我有一个关于在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)

我该如何解决这个问题?

非常感谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

JUnit4仅支持一个@RunWith注释,而JUnit4的@RunWith注释不接受多个运行者。Reference: project13

可能重复的问题,但这里是StackOverflow Question @Matthew Farwell的回答

  

不,你要么:

     

使用一个并创建一个测试基类来完成你想要的事情   另一个跑者要做。将您的测试分成多个测试   使用不同的跑步者。