Initially I was using only Mockito in junits so I was using SpringJUnit4ClassRunner.class in @RunWith annotation ie
@RunWith(SpringJUnit4ClassRunner.class)
due to which spring dependency injection was working fine and was getting a bean through
@Autowired
Someservice someservice ;
But now, I have also integrated PowerMock in it.
So as per doc , I have replaced class mentioned in @RunWith annotation with
@RunWith(PowerMockRunner.class)
but now, someservice is coming out to be null. Is there a way to use both SpringJUnit4ClassRunner.class and PowerMockRunner.class in @RunWith annotation
I know this thread is old, but it's good to add that since 2014 and this pull request, you can use the @PowerMockRunnerDelegate
annotation to "delegate" the run context to SpringJUnit4ClassRunner
(or any other runner really).
Above code would look like :
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@PrepareForTest(X.class);
public class MyTest {
// Tests goes here
...
}
With this annotation, you don't need the PowerMock rule anymore !
You have to use the PowerMockRule.
@RunWith(SpringJUnit4ClassRunner.class)
@PrepareForTest(X.class)
public class MyTest {
@Rule
public PowerMockRule rule = new PowerMockRule();
// Tests goes here
...
}
For a full example of the Spring Integration Test with PowerMock and Mockito, you could checkout this maven project.
svn co http://powermock.googlecode.com/svn/tags/powermock-1.4.12/examples/spring-mockito/
cd spring-mockito/
Look at the dependecies to powermock.
less pom.xml
and then run the test
mvn test
and you should get the following test results :
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With