You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ArchUnit测试类是否继承指定类?测试代码执行失败

如何用ArchUnit验证类是否间接继承指定类

你遇到的问题根源在于使用简单类名字符串时,ArchUnit无法正确定位到ClassA的全限定类,或者你的classes集合未包含ClassA/ClassB,导致ArchUnit无法解析完整的继承链路。

正确实现有两种可靠方式:

1. 使用全限定类名字符串

如果坚持用字符串形式,必须传入ClassA的全限定类名(比如com.example.ClassA),同时确保classes集合包含ClassA、ClassB、ClassC三个类:

ArchRuleDefinition.classes()
    .that()
        .haveSimpleName("ClassC")
    .should()
        .beAssignableTo("com.example.ClassA") // 替换为实际全限定类名
    .check(classes);

2. 直接传入Class类型(推荐)

这种方式类型安全,避免字符串拼写错误,是更稳妥的写法:

ArchRuleDefinition.classes()
    .that()
        .haveSimpleName("ClassC")
    .should()
        .beAssignableTo(ClassA.class)
    .check(classes);

额外注意事项

  • 确保classes变量包含所有相关类:ClassA、ClassB、ClassC都要被扫描到,否则ArchUnit无法识别继承关系。例如用ClassFileImporter扫描时,要覆盖这些类所在的包:
    JavaClasses classes = new ClassFileImporter().importPackages("com.example");
    

内容的提问来源于stack exchange,提问作者Gefest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:20:27