JUnit4迁移JUnit5:无法替换Karate与@CucumberOptions问题求助
Karate测试从JUnit4迁移到JUnit5的解决方案
关键修正步骤
- 替换依赖:移除
com.intuit.karate:karate-junit4,添加同版本的com.intuit.karate:karate-junit5依赖 - 替换导入:把
com.intuit.karate.junit4.Karate改为com.intuit.karate.junit5.Karate - 替换运行注解:删除
@RunWith(Karate.class),使用@ExtendWith(Karate.class)替代,@CucumberOptions可继续保留使用
修正后的完整代码
import KarateTest.utils.WiremockRunner; import com.intuit.karate.junit5.Karate; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.extension.ExtendWith; import io.cucumber.junit.CucumberOptions; @Disabled @ExtendWith(Karate.class) @CucumberOptions( junit = {".."}, features = "...", plugin = {"..."}, glue = {"s.."}, tags = {"..", "...", "..","..."}) public class HT { private static final WiremockRunner wiremock = new WiremockRunner(); @BeforeAll public static void beforeClass() throws Exception { wiremock.startWiremock(); Application.main(new String[] {"--spring.profiles.active=sb-vk"}); } @AfterAll public static void tearDown() throws Exception { wiremock.stopWiremock(); } }
可选简化方案(Karate 1.0.0+)
如果使用的是Karate 1.0.0及以上版本,可以用@KarateTest注解替代@ExtendWith和@CucumberOptions,配置更简洁:
import KarateTest.utils.WiremockRunner; import com.intuit.karate.junit5.KarateTest; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @Disabled @KarateTest(features = "...", tags = {"..", "...", "..","..."}) public class HT { private static final WiremockRunner wiremock = new WiremockRunner(); @BeforeAll public static void beforeClass() throws Exception { wiremock.startWiremock(); Application.main(new String[] {"--spring.profiles.active=sb-vk"}); } @AfterAll public static void tearDown() throws Exception { wiremock.stopWiremock(); } }
内容的提问来源于stack exchange,提问作者KVL
相关产品推荐
相关产品推荐

