У меня есть kotlin класс как
class MyClass {
val immutableField = "something"
}
Я хочу написать модульный тест, чтобы убедиться, что это поле остается неизменным, что если другой разработчик (случайно) изменит это на var
, что некоторые тест не пройден Как я могу это сделать? (Теперь, когда я думаю об этом, я не уверен, как бы я сделал это в Java на поле final
)
Это даже не скомпилируется, так что, очевидно, это не будет работать:
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
@Test
fun checkFieldCantBeMuted() {
val myClass = MyClass()
myClass.immutableField = "something else"
// assert field not updated
assertThat(myClass.immutableField).isEqualTo("something")
}
Теперь я знаю, что вы, возможно, говорите: «Не тестируйте фреймворк и не тестируйте язык», но я не пытаюсь утверждать, что val
приводит к неизменности , Я пытаюсь утверждать, что immutableField
это val
.