当前位置: 首页 > 知识库问答 >
问题:

PowerMockRunner不应用JUnit类规则

景理
2023-03-14

我需要模拟一个类的静态方法,并在测试中使用该模拟方法。现在看来我只能用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

共有1个答案

毛声
2023-03-14

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

@PrepareForTest(Request.class)
public class RoleTest {

  @Rule
  public HibernateSessionRule sessionRule = new HibernateSessionRule();
 类似资料:
  • 问题内容: 我有一个基于Gradle的Java项目,现在我想使用PowerMock模拟一个私有方法。问题是我无法使用PowerMockRunner,因为添加注释时总是会收到以下异常。 错误: 这是我的测试依赖项: 完全为空(初始化错误)时,测试本身也会失败: 任何想法可能有什么问题吗?使用PowerMock的其他测试运行正常(没有一个使用PowerMockRunner)。 问候和感谢您的任何帮助!

  • 我有3个测试类如下: 包裹通讯。朱尼特。测试用例; Test3类: Test2类: Test1类: 和一个TestSuite类: 问题是它在从eclipse从JUnit运行TestSuite1类时忽略了Test3类中的@规则标签,因此输出不如预期。为什么它忽略了@规则标签。有没有其他选择来执行所有三种情况?

  • 我明白,,

  • 我正在使用Mockito+PowerMock+PowerRule开发Junits 参考我前面的问题:使用Mockito在Junit中使用PowerMock和PowerRule获取未找到的javassist 现在我的JUnit已经成功地工作了,但我却遇到了一个奇怪的问题,Eclipse调试器无法工作,即尽管我的测试正在执行(用SOP语句检查),但我没有停止在断点上 现在,当我从Junits中删除Po

  • 当我尝试用PowerMock和Mockito测试一个方法并模拟它的依赖关系时遇到了问题。我尝试将依赖关系方法转换为非静态方法,并使用@mock注释和@injectmocks,但没有任何结果。 下面是正在测试的类和方法: 这里有一个我想要嘲弄的依赖关系,我很难嘲弄它: 最后,但不是最不重要的是,使用失败的测试方法的测试类。我不得不说,它甚至没有到达assert方法调用,而是在when().ThenR

  • 在JUnit 4.10及更低版本中,可以将规则注释为@规则和@ClassRur。这意味着规则会在类之前/之后以及每次测试之前/之后被调用。这样做的一个可能原因是设置一个昂贵的外部资源(通过@ClassRur调用),然后廉价地重置它(通过@Rur调用)。 从JUnit 4.11开始,@规则字段必须是非静态的,@ClassRule字段必须是静态的,因此上述操作不再可行。 有明确的变通方法(例如,明确地