【问题标题】:What kind of test do I need to test a network issue on a few specific devices我需要什么样的测试才能在一些特定设备上测试网络问题
【发布时间】:2020-04-11 13:46:11
【问题描述】:

如何测试以确保遵守请求超时

我需要编写一个测试来显示当 okhttp 请求花费的时间超过指定的超时时间时,它会被取消。我正在使用 junit4 和 mockito。我发现为此编写单元测试有点困难,因为它取决于设备的互联网连接

【问题讨论】:

    标签: android junit mockito okhttp


    【解决方案1】:

    最简单的方法是在设备或模拟器上运行测试

    在此处查看示例 android 测试 https://github.com/square/okhttp/tree/master/android-test

    $ ANDROID_SDK_ROOT=/Users/myusername/Library/Android/sdk ./gradlew :android-test:connectedCheck
    ...
    > Task :android-test:connectedDebugAndroidTest
    ...
    11:55:40 V/InstrumentationResultParser: Time: 13.271
    11:55:40 V/InstrumentationResultParser:
    11:55:40 V/InstrumentationResultParser: OK (12 tests)
    ...
    11:55:40 I/XmlResultReporter: XML test result file generated at /Users/myusername/workspace/okhttp/android-test/build/outputs/androidTest-results/connected/TEST-pixel3a-Q(AVD) - 10-android-test-.xml. Total tests 13, passed 11, assumption_failure 1, ignored 1,
    ...
    BUILD SUCCESSFUL in 1m 30s
    63 actionable tasks: 61 executed, 2 up-to-date
    

    你可以先修改https://github.com/square/okhttp/blob/master/android-test/src/androidTest/java/okhttp/android/test/compare/OkHttpClientTest.kt

    @RunWith(AndroidJUnit4::class)
    class OkHttpClientTest {
      private var client = OkHttpClient()
    
      @Test fun get() {
        val request = Request.Builder()
            .url("https://google.com/robots.txt")
            .build()
        client.newCall(request).execute().use { response ->
          assertThat(response.code).isEqualTo(200)
          assertThat(response.protocol).isEqualTo(Protocol.HTTP_2)
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 2015-07-06
      • 2011-10-18
      相关资源
      最近更新 更多