如何编写忽略JavaParser类路径未知类编译错误的OpenRewrite Java Recipe测试?
如何在OpenRewrite Java Recipe测试中忽略未知类类型的编译错误
是的,你可以通过配置JavaParser的错误恢复模式来忽略类路径中缺失未知类引发的编译错误。具体可在parser()配置中添加.errorRecoveryEnabled(true),这样即便部分类无法在类路径中找到,测试也能继续执行,不会因编译错误中断。
修改后的示例代码如下:
@Test void requiredRequestParam() { rewriteRun( spec -> spec .recipe(new MandatoryRequestParameter()) // 启用错误恢复,忽略未知类导致的编译错误 .parser(JavaParser.fromJavaVersion().errorRecoveryEnabled(true)), java( """ import org.springframework.web.bind.annotation.RequestParam; class ControllerClass { public String sayHello ( @RequestParam(value = "fred") String fred, @RequestParam(value = "lang") String lang, @RequestParam(value = "aNumber") Long aNumber ) { return "Hello"; } } """, """ import org.springframework.web.bind.annotation.RequestParam; class ControllerClass { public String sayHello ( @RequestParam(required = true, value = "fred") String fred, @RequestParam(value = "lang") String lang, @RequestParam(required = true, value = "aNumber") Long aNumber ) { return "Hello"; } } """ ) ); }
关键说明
errorRecoveryEnabled(true)会让JavaParser将未知类视为未解析类型,而非直接抛出编译错误,测试流程得以继续,你的Recipe依然能针对代码语法结构(比如注解属性)做修改。- 这种方式适合不需要依赖类完整语义信息,仅基于代码语法结构修改的场景。如果你的Recipe需要用到类元数据(比如注解完整定义、方法签名匹配等),仍建议将对应依赖添加到测试类路径,保证解析准确性。
内容的提问来源于stack exchange,提问作者José María Lora
相关产品推荐
相关产品推荐

