У меня есть несколько инструментальных тестов для Android.Когда я запускаю их в Android Studio (как эмулируемые, так и на устройстве), они в порядке, однако, когда я запускаю их на ферме устройств AWS, некоторые из них завершаются с ошибкой:
java.lang.RuntimeException: Не удалось запустить действие android.support.test.runner.MonitoringInstrumentation.startActivitySync (MonitoringInstrumentation.java:371)
Похоже, что они проверяют фрагменты, но это может вводить в заблуждение.Я новичок в Android, но я думаю, что они оба используют один и тот же apk?
Тест:
package uk.co.stuff
import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.assertion.ViewAssertions.matches
import android.support.test.espresso.matcher.ViewMatchers.isDisplayed
import android.support.test.espresso.matcher.ViewMatchers.withText
import android.support.test.filters.LargeTest
import android.support.test.runner.AndroidJUnit4
import android.support.v4.app.FragmentActivity
import com.android21buttons.fragmenttestrule.FragmentTestRule
import org.hamcrest.CoreMatchers.not
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import uk.co.stuff.MyFragment
import uk.co.stuff.models.Driver
import uk.co.stuff.utils.Constants
import uk.co.stuff.utils.DatabaseUtil
@RunWith(AndroidJUnit4::class)
@LargeTest
class ProfileFragmentShould {
@Rule
@JvmField
val fragmentTestRule =
FragmentTestRule(FragmentActivity::class.java, MyFragment::class.java, true, true)
@Test
fun not_show_payment_details() {
DatabaseUtil.setUser(Driver().apply { type = Constants.INDEPENDENT_DRIVER })
fragmentTestRule.launchFragment(MyFragment())
val paymentDetails =
fragmentTestRule.activity.getString(R.string.payment_details)
onView(withText(paymentDetails)).check(matches(not(isDisplayed())))
}
}