Что тут происходит?
assertEquals(mapOf("161" to "a", "163" to "b"), Firebase.database.getReference("case").get().await().value)
assertEquals(mapOf("1" to "hello", "3" to "hi"), Firebase.database.getReference("case2").get().await().value)
java.lang.AssertionError: ожидалось:<{1=hello, 3=hi}>, но было:<[null, hello, null, hi]>

Когда Firebase SDK обнаруживает дочерние свойства с числовыми ключами с низким значением, расположенными близко друг к другу, он преобразует значения в массив. А поскольку некоторые последовательные ключи отсутствуют, они в конечном итоге оказываются значениями null в массиве.
Невозможно отключить это приведение массива. Поэтому, чтобы избежать подобных проблем, я обычно использую для таких ключей короткий буквенно-цифровой префикс. Ставьте лайки "key_1", "key_3" и т. д.
Также см.: Лучшие практики: массивы в Firebase и другие вопросы об этом приведении массивов.
глядя на источник Android SDK, кажется, что использование формата экспорта позволяет избежать приведения массива
Это могло бы быть задокументировано в описании getValue.