0

我想编写一个拱单元测试来断言一个类扩展了AnyVal类型。

val rule = classes().should().beAssignableTo(classOf[AnyVal])
val importedClasses = new ClassFileImporter().importPackages("a.b.c")

isAnyVal.check(importedClasses) // Always returns true

上面的代码实际上并没有捕捉到任何东西,并且传递了不扩展的类AnyVal

4

1 回答 1

0

classOf[AnyVal]java.lang.Object,所以你只是要求所有的类都可以扩展Object,他们会这样做。

来自ArchUnit 用户指南

它通过分析给定的 Java 字节码、将所有类导入Java代码结构来实现这一点。

我希望你能得到Class等,并且可以从那里进入 Scala 反射,即使你不会得到好的 DSL,但他们使用他们自己的 API。

因此,要回答特定于 Scala 的问题,它需要解析@ScalaSignature注释,这对开发人员来说可能是一项非常大的工作(更不用说维护,或者至少在 Scala 3 之前对特定 Scala 版本的依赖)。

于 2020-06-06T16:31:43.933 回答