使用 google 编译测试测试注释处理器的适当参数

Test apt argument for annotation processor with google compile-testing

我正在为我的 android 项目编写注释处理器,我使用 google 编译测试对其进行测试。

一切正常,除了我能够测试注释处理器的 apt 插件参数。

我的注解处理器有这个选项我想测试:

@Override
public Set<String> getSupportedOptions() {
    Set<String> options = new HashSet<>();
    options.add("generated_class_suffix");
    return options;
}

我似乎不明白如何将此选项传递给编译测试库以对其进行测试。我试过 withCompilerOptions 如下:

    assertAbout(javaSource())
            .that(source)
            .withCompilerOptions("saver_suffix")
            .processedWith(new CodegenProcessor())
            .compilesWithoutError()
            .and()
            .generatesSources(generated);

但它给了我以下错误:

java.lang.IllegalArgumentException: invalid flag: saver_suffix

我不知道如何通过选项。

我从标准 javac documentation 中找到了如何将选项传递给注释处理器:

-Akey[=value] 

例如,如果我想将 saver_suffix 传递为 Saver,我需要传递 -Asaver_suffix=节省

所以我做到了:

 assertAbout(javaSource())
        .that(source)
        .withCompilerOptions("-Asaver_suffix=Saver")
        .processedWith(new CodegenProcessor())
        .compilesWithoutError()
        .and()
        .generatesSources(generated);