2012-07-13 74 views
5

一旦我添加RunWith注释,那就是@RunWith(PowerMockRunner.class) Spring Autowire不再有效!为什么Spring Autowire在添加“RunWith”注释时停止工作?

class B { 
    @Autowire 
    SessionFactory session; 
} 

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

class Testing { 

    @Test 
    methodA(){ 
    //mehod 
    } 

    @Test 
    methodD(){ 
    }  
} 

现在,方法A使得B类的电话,但由于RunWith(PowerMockRunner)注释,自动装配不工作。任何帮助将不胜感激!

+1

什么的“前”情况下的样子。 @Autowire不只是工作。你以前在使用Spring Test Runner或MockitoJUnitRunner还是其他的东西? – jhericks 2012-07-14 00:35:44

+1

而不是自动配线,使用Whitebox或setter将字段设置为模拟。你可以通过这种方式更好地控制班上发生的事情。 – 2012-07-14 02:30:51

+0

嗨jhericks,当它运行时,RunWith称RunWith(SpringJUnit4ClassRunner) – TimeToCodeTheRoad 2012-07-16 17:38:21

回答

1

春天不是魔术(即使它有时似乎)。没有你的代码中的哪个地方让你有机会启动一个应用程序上下文,并执行自动连接你的bean的工作。您需要自己启动环境或将测试切换为使用@RunWith(SpringJUnit4ClassRunner.class)。不幸的是JUnit一次只支持一个跑步者,所以你需要停止使用PowerMockRunner。

相关问题