https://github.com/webcompere/java-test-gadgets项目让您可以通过多种方式解决这个问题。
您可以通过 - 使用它对 JUnit 4 规则的支持,DangerousRuleAdapter
这将尝试将任何 JUnit 4 规则转换为Plugin
:
@ExtendWith(PluginExtension.class)
public class DangerousRuleAdapterExampleTest {
@Plugin
private DangerousRuleAdapter<WireMockRule> adapter =
new DangerousRuleAdapter<>(new WireMockRule());
@Test
void theTest() {
// use wiremock rule here
WireMockRule rule = adapter.get();
}
规则适配器不能与检查测试类或测试方法的规则一起使用,但会很好地尝试运行规则。
还支持围绕某些代码运行规则:
TemporaryFolder temporaryFolder = new TemporaryFolder();
// let's use this temp folder with some test code
executeWithRule(temporaryFolder, () -> {
// here, the rule is _active_
callSomethingThatUses(temporaryFolder.getRoot());
});
PluginExtension
您可以使用和轻松创建自己的新 JUnit 5 插件TestResource.of
@ExtendWith(PluginExtension.class)
class TestResourceIsActiveDuringTest {
private WireMockServer server;
@Plugin
private TestResource someResource = TestResource.from(() -> server.start(),
() -> server.stop());