我的测试套件不会运行,它似乎是@RunWith(AndroidJUnit4::class)。我是跟随一个教程,所以我不是100%确定这部分是做什么的,或者这是什么意思。
@RunWith(AndroidJUnit4::class)错误是注释参数必须是编译时常数
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@get:Rule
val activityRule = ActivityTestRule(MainActivity::class.java, true, false)
private val mockWebServer = MockWebServer()
@Before
fun setup() {
mockWebServer.start(8080)
IdlingRegistry.getInstance().register(
ServiceBuilder.getClient()?.let {
OkHttp3IdlingResource.create(
"okhttp",
it
)
}
)
}
@Test
fun testSuccessfulResponse() {
mockWebServer.dispatcher = object : Dispatcher() {
override fun dispatch(request: RecordedRequest): MockResponse {
return MockResponse()
.setResponseCode(200)
.setBody(readStringFromFile("success_response.json"))
}
}
activityRule.launchActivity(null)
onView(withId(R.id.progress_bar))
.check(matches(withEffectiveVisibility(Visibility.GONE)))
onView(withId(R.id.recyclerView))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
@Test
fun testFailedResponse() {
mockWebServer.dispatcher = object : Dispatcher() {
override fun dispatch(request: RecordedRequest): MockResponse {
return MockResponse().throttleBody(1024, 5, TimeUnit.SECONDS)
}
}
activityRule.launchActivity(null)
onView(withId(R.id.progress_bar))
.check(matches(withEffectiveVisibility(Visibility.GONE)))
onView(withId(R.id.recyclerView))
.check(matches(withEffectiveVisibility(Visibility.GONE)))
}
@After
fun teardown() {
mockWebServer.shutdown()
}
}
我正在尝试编写测试,将从模拟服务器接收json。
原来我需要把我的测试放在
androidTest/java/com/example/appname
文件夹,而不是test/java/com/example/appname
文件夹
一旦我移动了一切,它工作得很好!