Android Espresso 的测试:
第一个版本
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
private lateinit var mockServer: MockWebServer
@Rule
@JvmField
var tradersIntentTestRule = IntentsTestRule(TradersActivity::class.java, false, false)
@Before
fun setup() {
mockServer = MockWebServer()
mockServer.start(8081)
Debug.d(TAG, "setup_START")
}
@Test
fun testMockServer() {
Debug.d(TAG, "testMockServer_start")
mockServer.enqueue(MockResponse()
.setResponseCode(200)
.setBodyDelay(10000, TimeUnit.MILLISECONDS)
.setBody(FileUtil.getStringFromFile(context, randomTraderStubName.stubName)));
Debug.d(TAG, "testMockServer_finish")
}
@After
@Throws
fun tearDown() {
mockServer.shutdown()
}
这里结果logcat:
05-31 18:10:52.327 D/com.myproject.activity.TradersActivityTest(10312): testMockServer_start
05-31 18:10:52.371 D/com.myproject.activity.TradersActivityTest(10312): testMockServer_finish
正如你所看到的文本“ testMockServer_finish
”立即显示。不要等10秒。
第二个版本:
@Test
fun testMockServer() {
Debug.d(TAG, "testMockServer_start")
tradersIntentTestRule.finishActivity()
mockServer.enqueue(MockResponse()
.setResponseCode(200)
.setBodyDelay(10000, TimeUnit.MILLISECONDS)
.setBody(FileUtil.getStringFromFile(context, randomTraderStubName.stubName)));
tradersIntentTestRule.launchActivity(Intent())
Debug.d(TAG, "testMockServer_finish")
}
结果日志猫:
05-31 18:14:54.103 D/com.myproject.android.activity.TradersActivityTest(11689): testMockServer_start
05-31 18:15:04.322 D/com.myproject.android.activity.TradersActivityTest(11689): testMockServer_finish
现在你可以看到文本“ testMockServer_finish
”在 10 秒后显示
为什么在第一个版本不等待 10 秒?