When to use @RunWith and when @ExtendWith
Solution 1:
If you are using Junit version < 5, so you have to use @RunWith(SpringRunner.class)
or @RunWith(MockitoJUnitRunner.class)
etc.
If you are using Junit version = 5, so you have to use @ExtendWith(SpringExtension.class)
or @ExtendWith(MockitoExtension.class)
etc.
- SpringRunner
- MockitoJUnitRunner
- SpringExtension
- MockitoExtension
Solution 2:
The answer can be found in the documentation:
If you are using JUnit 4, don’t forget to add @RunWith(SpringRunner.class)to your test, otherwise the annotations will be ignored. If you are using JUnit 5, there’s no need to add the equivalent @ExtendWith(SpringExtension.class) as @SpringBootTest and the other @…Testannotations are already annotated with it
.
Solution 3:
@RunWith
is an old annotation from JUnit 4 to use test runners. If you're using JUnit 5 (Jupiter), you should use @ExtendWith
to use JUnit extensions.