JUnit方法级别类别不适用于PowerMockRunner

JUnit方法级别类别不适用于PowerMockRunner,junit,powermock,Junit,Powermock,给定这个测试类 @PowerMockIgnore("UnitTest") @Category(UnitTest.class) @RunWith(PowerMockRunner.class) public class SomeClass { @Test @Category(SlowTest.class) public void SlowMethod(){...} } 还有一套测试套件 @RunWith(Ca

给定这个测试类

    @PowerMockIgnore("UnitTest")
    @Category(UnitTest.class)
    @RunWith(PowerMockRunner.class)
    public class SomeClass {

       @Test
       @Category(SlowTest.class)
       public void SlowMethod(){...}
    }
还有一套测试套件

   @RunWith(Categories.class)
   @SuiteClasses({AllUnitTestSuite.class})
   @ExcludeCategory(SlowTest.class)
   public class FastUnitTestSuite {

   }
当我运行FastUnitTestSuite时,它也会运行SlowMethod,尽管它属于SlowTest类别。
我可以使用PowerMockIgnore和多个类别排除慢速测试类。在使用PowerMockRunner时,我如何排除慢速测试方法?

如果您想在不同的测试运行程序中使用
PowerMock
,应该使用


您可以在中看到一个示例。

谢谢gontard!以下是我所改变的:

@PowerMockIgnore({ "org.mockito.*" })
@Category(UnitTest.class)

public class SomeClass {

   @Rule
   public PowerMockRule rule = new PowerMockRule(); //it has to be public

   @Test
   @Category(SlowTest.class)
   public void SlowMethod(){...}
}

我还必须将这些lib添加到我的类路径中:powermock-module-junit4-rule、powermock classloading base、powermock classloading xstream、xpp3_min

由于类别中的下一行,所以出现了这个问题。方法HasCorrectCategoryNotation下的CategoryFilter文件

if (fIncluded == null || fIncluded.isAssignableFrom(each))
  • 即使类类型相同或处于继承状态,这也将失败,因为
    fIncluded
    由类别类装入器装入,而
    每个
    由PowerMockRunner类装入器装入
也许我们需要修正这个逻辑