通过仪器测试来测试多语言,而无需手动更改设备的语言?

时间:2019-11-26 14:52:38

标签: android android-espresso

在我的多语言应用程序中,我编写了两个工具测试来检查按钮的标题。

fun viewWithId(@IdRes id: Int): ViewInteraction = Espresso.onView(ViewMatchers.withId(id))

@RunWith(AndroidJUnit4::class)
class FeedbackActivityTest {
    @get:Rule
    var addTraderIntentTestRule: IntentsTestRule<FeedbackActivity> =
        IntentsTestRule(FeedbackActivity::class.java)

    private val buttonSend = viewWithId(R.id.buttonSend)

 @Test
    fun buttonSend_title_en() {
        buttonSend
            .check(matches(withText("Send")))
    }

    @Test
    fun buttonSend_title_ru() {
        buttonSend
            .check(matches(withText("Отправить")))
}

设备的语言为英语。如果我仅开始测试buttonSend_title_en(),则测试通过。但是,如果我开始测试buttonSend_title_ru(),则会失败(因为当前的语言是英语)。

好。要解决此问题,我必须手动将设备的语言更改为俄语,然后再次 buttonSend_title_ru()。现在通过了,但是... buttonSend_title_en()失败了。

在实际项目中,我有50多个测试。而且我不想每次都手动更改设备的语言。成功通过所有测试是否有可能?

0 个答案:

没有答案