Android の JUnit テストで Locale を切り替えて実行する
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())
}
}
結果
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())
}
}
結果
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())
}
}
Author And Source
この問題について(Android の JUnit テストで Locale を切り替えて実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/tatsuhama/items/d6daae9ec6912bb94668著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .