TL;DR
-
Locale.setDefault(...)
する
背景
- 言語によって挙動が変わる関数の JUnit テストを書きたい
- 例)人物の表示名を返す関数
- 日本語の時:姓+名
- それ以外の時:名+姓
Person.kt
data class Person(val firstName: String, val lastName: String) {
fun displayName(): String =
when (Locale.getDefault()) {
Locale.JAPAN -> "$lastName $firstName"
else -> "$firstName $lastName"
}
}
テストコード
PersonTest.kt
class PersonTest {
private val person = Person(firstName = "Taro", lastName = "Yamada")
@Test
fun displayNameTestJp() {
Locale.setDefault(Locale.JAPAN)
Assert.assertEquals("Yamada Taro", person.displayName())
}
@Test
fun displayNameTestUs() {
Locale.setDefault(Locale.US)
Assert.assertEquals("Taro Yamada", person.displayName())
}
}