我需要模拟一个类的静态方法,并在测试中使用该模拟方法。现在看来,我只能使用PowerMock来做到这一点。

我用适当的类对@RunWith(PowerMockRunner.class)和@PrepareForTest进行注释。

在我的测试中,我有一个@ClassRule,但是在运行测试时,该规则未正确应用。

我能做些什么 ?

    RunWith(PowerMockRunner.class)
@PowerMockIgnore({
    "javax.xml.*",
    "org.xml.*",
    "org.w3c.*",
    "javax.management.*"
})
@PrepareForTest(Request.class)
public class RoleTest {

    @ClassRule
    public static HibernateSessionRule sessionRule = new HibernateSessionRule(); // this Rule doesnt applied

最佳答案

我查看了PowerMock代码。看来PowerMockRunner不支持@ClassRule。您可以尝试将HibernateSessionRule用作@Rule而不是@ClassRule

@PrepareForTest(Request.class)
public class RoleTest {

  @Rule
  public HibernateSessionRule sessionRule = new HibernateSessionRule();

10-07 16:21