Tag: 断言

是否可以懒惰地初始化一个属性并声明它?

我怎么能懒惰初始化一个字段,并执行一个断言呢? 我试过了 val table: Array<FormatInfo> by lazy { val t = arrayOf(…) assert(table.size == FORMAT_COUNT, { System.err.println("GLI error: format descriptor list doesn't match number of supported formats") }) t } 但它溢出了: java.lang.StackOverflowError at gli.GliKt$table$2.invoke(gli.kt:451) at gli.GliKt$table$2.invoke(gli.kt) at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) at gli.GliKt.getTable(gli.kt) at gli.GliKt$table$2.invoke(gli.kt:693) at gli.GliKt$table$2.invoke(gli.kt) at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) at gli.GliKt.getTable(gli.kt) at gli.GliKt$table$2.invoke(gli.kt:693)… 我该如何解决?

断言与Kotin中的错误消息

从Java切换后,我在Kotlin中感觉很舒服,无法找到如何将Kotlin的assert函数与错误消息一起使用。 听起来很简单,我只需要类似于Java的东西 assert count > 5 : "value too small" 我试过了 assert(count > 5, "value too small") 但是,第二个参数需要是() -> Any 。 如何实现?

是否有相当于AssertJ库的Kotlin?

我正在将一些测试从Java转换到Kotlin。 对于Java测试,我使用AssertJ库,这个库非常强大,并且拥有丰富的断言。 我的问题是,对于Kotlin测试,我不能使用AssertJ和Kotlin JUnit( org.jetbrains.kotlin:kotlin-test-junit )具有非常有限的一组断言。 有没有Kotlin相当于AssertJ或更好的方式断言? 我找到了Kluent库,但是我仍然不确定这是否是最好的库。