10

一旦我添加了RunWith注释,那就是@RunWith(PowerMockRunner.class)Spring Autowire 不再工作了!

class B {  
  @Autowire  
  SessionFactory session;
}

@RunWith(PowerMockRunner.class)  
@PrepareForTest{SomeClass.class}

class Testing {  

  @Test
  methodA(){  
    //mehod 
  }

  @Test
  methodD(){  
  }    
}  

现在,方法 A 调用了类 B,但由于RunWith(PowerMockRunner)注释,自动装配不起作用。任何帮助将不胜感激!

4

2 回答 2

11

在 2016 年,您可以将运行器委托与 PowerMockito 一起使用,有效地使用两个运行器:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)

更多细节在这里:https ://github.com/jayway/powermock/wiki/JUnit_Delegating_Runner

于 2016-02-03T09:52:53.257 回答
2

春天并不神奇(即使有时看起来很像)。在您的代码中,您没有让 spring 有机会启动应用程序上下文并完成自动连接 bean 的工作。您需要自己启动上下文或将测试切换为使用@RunWith(SpringJUnit4ClassRunner.class). 不幸的是,JUnit 一次只支持一个运行器,因此您需要停止使用 PowerMockRunner。

于 2012-07-14T13:20:27.387 回答