注释参数必须是编译时常量 @RunWith(AndroidJUnit4::class)
An annotation argument must be a compile-time constant @RunWith(AndroidJUnit4::class)
我的测试套件不会 运行,它似乎是 @RunWith(AndroidJUnit4::class)。我一直在学习教程,所以我不是 100% 确定那部分是做什么的,或者这意味着什么。
@RunWith(AndroidJUnit4::class) 错误是 An annotation argument must be a compile-time constant
@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
文件夹
一旦我移动了所有东西,它就很好用!
我的测试套件不会 运行,它似乎是 @RunWith(AndroidJUnit4::class)。我一直在学习教程,所以我不是 100% 确定那部分是做什么的,或者这意味着什么。
@RunWith(AndroidJUnit4::class) 错误是 An annotation argument must be a compile-time constant
@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
文件夹
一旦我移动了所有东西,它就很好用!