Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我添加“弹簧自动线”时弹簧自动线停止工作;RunWith";注释?_Java_Spring_Mocking_Mockito_Powermock - Fatal编程技术网

Java 为什么我添加“弹簧自动线”时弹簧自动线停止工作;RunWith";注释?

Java 为什么我添加“弹簧自动线”时弹簧自动线停止工作;RunWith";注释?,java,spring,mocking,mockito,powermock,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

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

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

2016年,您可以将runner delegate与PowerMockito一起使用,有效地使用两个runner:

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

更多详情如下:

之前的案例是什么样的@Autowire不仅仅起作用。您以前使用的是Spring测试运行程序、MockitoJUnitRunner或其他工具吗?使用Whitebox或Setter将字段设置为模拟,而不是自动连接。通过这种方式,你可以更好地控制你的类中发生的事情。嗨,杰瑞克,当它运行时,RunWith说RunWith(SpringJUnit4ClassRunner)