【问题标题】:issues while using @RunWith Annotation and powerMock使用@RunWith Annotation 和 powerMock 时的问题
【发布时间】:2012-08-22 22:23:01
【问题描述】:

最初我在 junits 中只使用 Mockito,所以我在 @RunWith 注释中使用 SpringJUnit4ClassRunner.class 即

@RunWith(SpringJUnit4ClassRunner.class) 

由于 Spring 依赖注入工作正常并且正在通过 bean

@Autowired

Someservice someservice ;

但是现在,我也把 PowerMock 集成在里面了。

所以按照 doc ,我已将 @RunWith 注释中提到的类替换为

@RunWith(PowerMockRunner.class)

但是现在,someservice 即将为空。有没有办法在@RunWith 注释中同时使用 SpringJUnit4ClassRunner.classPowerMockRunner.class

【问题讨论】:

    标签: java junit mockito powermock


    【解决方案1】:

    您必须使用PowerMockRule

    @RunWith(SpringJUnit4ClassRunner.class) 
    @PrepareForTest(X.class)
    public class MyTest {
        @Rule
        public PowerMockRule rule = new PowerMockRule();
    
        // Tests goes here
        ...
    }
    

    有关使用 PowerMock 和 Mockito 进行 Spring 集成测试的完整示例,您可以查看 maven project

    svn co http://powermock.googlecode.com/svn/tags/powermock-1.4.12/examples/spring-mockito/
    cd spring-mockito/
    

    查看 powermock 的依赖关系。

    less pom.xml
    

    然后运行测试

    mvn test
    

    你应该得到以下测试结果:

    Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
    

    【讨论】:

    • 嘿gontard,我已经尝试过你的解决方案,但是当我执行我的junit时,我遇到了一个例外,即PowerMockRule“规则”应该是公开的,所以我把它公开了,现在我得到了javassist.NotFoundException .有什么想法吗? exeption java.lang.RuntimeException: javassist.NotFoundException: $Proxy88 at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:187) at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:147 ) ....
    • @bhuvan 我不知道,也许是this issue。我也完成了我的答案。
    【解决方案2】:

    我知道这个线程很旧,但最好补充一点,自 2014 年以来和这个pull request,您可以使用@PowerMockRunnerDelegate 注释将运行上下文“委托”给SpringJUnit4ClassRunner(或任何其他跑步者) .

    上面的代码看起来像:

    @RunWith(PowerMockRunner.class)
    @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
    @PrepareForTest(X.class);
    public class MyTest {
    
        // Tests goes here
        ...
    }
    

    有了这个注解,你就不再需要 PowerMock 规则了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多