如果 class 使用 ArchUnit 扩展 "AnyVal",我该如何断言
How can I assert if a class extends "AnyVal" using ArchUnit
我想编写一个 arch unit 测试来断言 class 扩展了 AnyVal
类型。
val rule = classes().should().beAssignableTo(classOf[AnyVal])
val importedClasses = new ClassFileImporter().importPackages("a.b.c")
isAnyVal.check(importedClasses) // Always returns true
上面的代码实际上并没有捕捉到任何东西,并通过了 class 不扩展 AnyVal
的代码。
classOf[AnyVal]
是 java.lang.Object
,所以您只是要求所有 类 扩展 Object
,他们这样做了。
It does so by analyzing given Java bytecode, importing all classes into a Java code structure.
我希望你能得到 Class
等,并且可以从那里进入 Scala 反射,即使你不会得到很好的 DSL,但他们使用他们自己的 API .
因此,要回答特定于 Scala 的问题,它需要解析 ,这对开发人员来说可能是一项非常大的工作(更不用说维护,或者至少直到直到特定 Scala 版本的依赖斯卡拉 3).
我想编写一个 arch unit 测试来断言 class 扩展了 AnyVal
类型。
val rule = classes().should().beAssignableTo(classOf[AnyVal])
val importedClasses = new ClassFileImporter().importPackages("a.b.c")
isAnyVal.check(importedClasses) // Always returns true
上面的代码实际上并没有捕捉到任何东西,并通过了 class 不扩展 AnyVal
的代码。
classOf[AnyVal]
是 java.lang.Object
,所以您只是要求所有 类 扩展 Object
,他们这样做了。
It does so by analyzing given Java bytecode, importing all classes into a Java code structure.
我希望你能得到 Class
等,并且可以从那里进入 Scala 反射,即使你不会得到很好的 DSL,但他们使用他们自己的 API .
因此,要回答特定于 Scala 的问题,它需要解析