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 are no suggestions when I'm trying to import @Rule annotation.
Do I need to add another module of JUnit dependency? Or are rules not supported in JUnit 5? If not, how can I replace @Rule annotation to make tests work again?
In a general way, what you did with
@Ruleand@ClassRulein JUnit 4 should be done with@ExtendWithandExtensionthat associated provide a very close feature in JUnit 5.It works as standards JUnit lifecycle hooks but that it is extracted in a
Extensionclass. And similarly to@Rule, as manyExtensions as required may be added for a test class.To handle the issue you have several possible approaches among :
@Ruleas anExtension.WireMockRule(start the server, execute your tests and stop the server) in each test of class with@BeforeEachand@AfterEachhook methods.Note that your issue already discussed in the JUnit 5 Issues.