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

Tim*_*oad 7 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(){  
  }    
}  
Run Code Online (Sandbox Code Playgroud)

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

tee*_*jay 10

在2016年,您可以使用PowerMockito的转轮代表,有效地使用两个跑步者:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
Run Code Online (Sandbox Code Playgroud)

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


jja*_*man 2

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