I'm using wiremock in my tests and have such a line of code:
@Rule
public WireMockRule wireMockRule = new WireMockRule(8080);
I want to switch to Junit 5. So I added the next dependency (using gradle):
testCompile('org.junit.jupiter:junit-jupiter-engine:5.1.1')
But there no suggestions when I'm trying to import @Rule annotation. Do I need to add another module of junit dependency? Or rules are not supported in Junit5? If not how can I replace @Rule annotation to make tests work again? Thanks.
In a general way, what you did with @Rule
and @ClassRule
in JUnit 4 should be done with @ExtendWith
and Extension
that associated provide a very close feature in JUnit 5.
It works as standards JUnit lifecycle hooks but that it is extracted in a Extension
class. And similarly to @Rule
, as many Extension
s as required may be added for a test class.
To handle the issue you have several possible approaches among :
@Rule
as an Extension
.WireMockRule
(start the server, execute your tests and stop the server) in each test of class with @BeforeEach
and @AfterEach
hook methods.Note that your issue already discussed in the JUnit 5 Issues.