如何为assertj-assertions-generator-maven-plugin添加自定义入口类名变量
使用assertj-assertions-generator-maven-plugin添加自定义变量的方案
当然可以通过自定义变量动态生成入口类名,完美解决你多模块下类名冲突的问题,具体操作步骤如下:
第一步:在Maven POM中定义自定义属性
在模块的POM文件里添加一个自定义属性,比如AssertionsEntryPointClassName,值可以设置为模块专属标识(比如模块名):<properties> <AssertionsEntryPointClassName>MyOrderModule</AssertionsEntryPointClassName> </properties>第二步:配置插件并指定自定义模板
配置assertj-assertions-generator-maven-plugin时,通过entryPointTemplate参数指定你的自定义模板文件路径:<build> <plugins> <plugin> <groupId>org.assertj</groupId> <artifactId>assertj-assertions-generator-maven-plugin</artifactId> <version>2.2.0</version> <!-- 建议使用最新稳定版本 --> <executions> <execution> <goals> <goal>generate-assertions</goal> </goals> </execution> </executions> <configuration> <entryPointTemplate>${project.basedir}/src/test/resources/assertj-entry-point-template.java</entryPointTemplate> </configuration> </plugin> </plugins> </build>第三步:编写自定义模板文件
在指定路径创建模板文件assertj-entry-point-template.java,内容如下(直接使用你定义的变量即可):package ${package}; @javax.annotation.Generated(value="assertj-assertions-generator") public class ${AssertionsEntryPointClassName}Assertions { ${all_assertions_entry_points} protected ${AssertionsEntryPointClassName}Assertions() { // empty } }
这样每个模块可以设置不同的AssertionsEntryPointClassName值,生成的入口类就会是类似MyOrderModuleAssertions、MyUserModuleAssertions这样的专属名称,跨模块使用测试Jar时就不会出现类名混淆的问题了。插件会自动将POM中的属性值替换到模板对应的变量位置。
内容的提问来源于stack exchange,提问作者John B
相关产品推荐
相关产品推荐

