Как сравнить Long и Int с assertEquals с Kotlin и Junit
Например
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>




Я думаю, вам придется преобразовать оба числа в один и тот же тип, например:
assertEquals(size.toLong(), totalElements)
Это преобразует size в Long; а totalElements уже является Long, поэтому компилятор может вывести тип Long для assertEquals(). Это немного неудобно, но компилируется и делает то, что вы хотите.
(Конечно, вы могли бы вместо этого преобразовать в Int (или другой числовой тип), но это не так хорошо, потому что он может давать ложные срабатывания, если totalElements находится за пределами диапазона Int.)
Это немного более неудобно, чем Java, потому что Kotlin более осторожен с числовыми преобразованиями, которые он выполняет; как и улучшенная проверка на null, это может выявить потенциальные ошибки, которых не будет в Java.
Как ни странно, когда я попробовал ваш код, он даже не компилировался: он терпит неудачу с ошибкой «Не удалось определить тип». (Я использую kotlinc-jvm 1.3.11.) И снова Kotlin обнаруживает проблемы во время компиляции!