当我添加“RunWith”注释时,为什么Spring Autowire会停止工作?

时间:2012-07-13 20:32:43

标签: java spring mocking mockito powermock

一旦我添加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)注释,自动装配不起作用。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:9)

2016年,您可以使用PowerMockito的转轮代表,有效地使用两名参赛者:

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

此处有更多详情:https://github.com/jayway/powermock/wiki/JUnit_Delegating_Runner

答案 1 :(得分:1)

春天不是魔术(即使它有时似乎)。你的代码中没有任何地方让你有机会启动应用程序上下文并完成自动连接bean的工作。您需要自己启动上下文或切换测试以使用@RunWith(SpringJUnit4ClassRunner.class)。不幸的是,JUnit一次只支持一个运行器,因此您需要停止使用PowerMockRunner。