如何比较Long和Int与assertEquals。朱尼特·科特林

时间:2018-12-17 00:27:50

标签: spring-boot junit kotlin

我该如何比较Long和Int与使用Kotlin和Junit的assertEquals

例如

var size: Int = 20
var totalElements: Long = 20
assertEquals(size, totalElements)

java.lang.AssertionError: expected: java.lang.Integer<20> but was: java.lang.Long<20>
Expected :java.lang.Integer<20> 
Actual   :java.lang.Long<20>

1 个答案:

答案 0 :(得分:2)

我认为您必须将两个数字都转换为相同的类型,例如:

import {combineReducers} from 'redux' import user from './user/Reducer' import marketPlace from './money/Reducer' const rootReducer = combineReducers({ user, marketPlace }) export default rootReducer

这会将assertEquals(size.toLong(), totalElements)转换为Long;并且size已经是totalElements,因此编译器可以为Long推断出Long类型。有点尴尬,但是可以编译并执行您想要的操作。

(当然,您可以将其转换为assertEquals()(或其他数字类型),但是那样不好,因为如果Int超出Int的范围,则可能会产生误报。 )

这比Java有点尴尬,因为Kotlin在执行数字转换时更加谨慎。与改进的null检查一样,它可以暴露Java不会发现的潜在错误。

奇怪的是,当我尝试使用您的代码时,它甚至无法编译:它因“类型推断失败”错误而失败。 (我正在使用kotlinc-jvm 1.3.11。)再次,Kotlin在编译时发现了问题!