问题在使用@RunWith注释和powerMock(issues while using @RunW

2019-06-27 12:07发布

最初我是在junits只用这样的Mockito我在@RunWith注释,即使用SpringJUnit4ClassRunner.class

@RunWith(SpringJUnit4ClassRunner.class) 

由于这春天的依赖注入工作正常,并通过渐渐豆

@Autowired

Someservice someservice ;

但现在,我还集成PowerMock在里面。

所以,按照DOC ,我已经取代了阶级@RunWith注释中提到与

@RunWith(PowerMockRunner.class)

但现在,someservice是走出来为空。 是否有@RunWith标注同时使用SpringJUnit4ClassRunner.classPowerMockRunner.class方式

Answer 1:

您必须使用PowerMockRule 。

@RunWith(SpringJUnit4ClassRunner.class) 
@PrepareForTest(X.class)
public class MyTest {
    @Rule
    public PowerMockRule rule = new PowerMockRule();

    // Tests goes here
    ...
}

对于Spring集成测试与PowerMock和的的Mockito一个完整的例子,你可以签这个Maven项目 。

svn co http://powermock.googlecode.com/svn/tags/powermock-1.4.12/examples/spring-mockito/
cd spring-mockito/

看看依赖判断powermock。

less pom.xml

然后运行测试

mvn test

你应该得到的试验结果如下:

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0


Answer 2:

我知道这个线程是旧的,但它是很好的补充,从2014年起,该拉的要求 ,你可以使用@PowerMockRunnerDelegate标注为“委托”运行上下文SpringJUnit4ClassRunner (或任何其他选手真的)。

上面的代码如下所示:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@PrepareForTest(X.class);
public class MyTest {

    // Tests goes here
    ...
}

有了这个注解,你不需要PowerMock规则了!



文章来源: issues while using @RunWith Annotation and powerMock