如何实现基于自定义@Jira注解的JUnit Test Suite选择器?
自定义JUnit套件筛选带@Jira注解的测试用例
问题背景
我有一个自定义的@Jira注解,用于将测试用例与Jira测试用例Key关联,示例代码如下:
@Jira("jira-T123")
我需要实现一个测试套件选择器,接收Jira Key列表作为参数,仅运行那些@Jira注解值包含在该列表中的测试用例,预期的套件代码结构如下:
@Suite @SelectPackages("<test package>") @SelectJiraKeys({ "jira-T123", "jira-T124"}) public class JiraKeySuite {
目前不知道该从何入手,寻求解决方案。
尝试过的方案(更新)
根据建议,我尝试通过@Tag来实现套件筛选。为了避免重复代码,我修改了现有的@Jira注解,试图让它自动添加对应的Tag:
@Tag("") @Test @Target({ ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface Jira { /** * Jira test case keys. * * @return */ @AliasFor(annotation = Tag.class, attribute = "value") String value(); }
但JUnit不支持这种带属性覆盖的组合注解,相关问题已被官方确认。
可行方案分析
目前我认为有两种可行的解决方案:
- 使用Aspect为测试用例动态添加
@Tag("value")注解,将Jira Key作为Tag值 - 自定义Test Engine,通过扩展
DiscoverySelectorResolver来实现基于@Jira注解的测试用例筛选
内容的提问来源于stack exchange,提问作者asenec4
相关产品推荐
相关产品推荐

