在Android仪器化测试中模拟无互联网连接/慢速互联网连接

在Android仪器化测试中模拟无互联网连接/慢速互联网连接,android,kotlin,testing,connection,instrumented-test,Android,Kotlin,Testing,Connection,Instrumented Test,我正在编写一个库,不断检查android设备的连接,并在设备连接、断开连接或互联网连接变慢时发出回调 我想为这个库编写Android指令测试,我需要模拟没有互联网连接以及缓慢的互联网连接 package com.muddassir.connection\u checker 导入androidx.test.platform.app.InstrumentationRegistry 导入androidx.test.ext.junit.runners.AndroidJUnit4 导入org.junit

我正在编写一个库,不断检查android设备的连接,并在设备连接、断开连接或互联网连接变慢时发出回调

我想为这个库编写Android指令测试,我需要模拟没有互联网连接以及缓慢的互联网连接

package com.muddassir.connection\u checker
导入androidx.test.platform.app.InstrumentationRegistry
导入androidx.test.ext.junit.runners.AndroidJUnit4
导入org.junit.Test
导入org.junit.runner.RunWith
导入org.junit.Assert*
/**
*仪器化测试,将在Android设备上执行。
*
*参见[测试文档](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::类)
类连接检查测试{
@试验
有趣的checkDisconnectedState(){
val context=InstrumentationRegistry.getInstrumentation().targetContext
InstrumentationRegistry.getInstrumentation().runOnMainSync{
val connectionChecker=connectionChecker(上下文,null)
connectionChecker.connectivityListener=对象:connectivityListener{
覆盖未连接的乐趣(){
资产真(假)
}
覆盖已断开连接的节点(){
资产真实(真实)
}
覆盖有趣的onConnectionSlow(){
资产真(假)
}
}
//断开与internet的连接。我如何做到这一点?
connectionChecker.startChecking()
}
线程。睡眠(30000)
}
}

改型有一个
改型模拟
模块,该模块提供一个模拟重启适配器类,其目的是模拟网络延迟和错误

这是一个与普通RestAdapter结合使用的方法,用于创建服务实例。您可以在repo的samples/mock github client/文件夹中看到完整示例:

MockRestAdapter提供以下API:

setDelay
-设置网络往返延迟,以毫秒为单位。
setVariancePercentage
-设置网络往返延迟的正负差异百分比。
setErrorPercentage
-设置返回true的调用
calculateIsFailure()
的百分比。
在您的测试中,您可以调用
setErrorPercentage(100)
,以确保发生网络错误。默认情况下,抛出错误的时间是延迟的0到3倍。

改型有一个
改型模拟
模块,该模块提供一个MockRestAdapter类,其目的是模拟网络延迟和错误

这是一个与普通RestAdapter结合使用的方法,用于创建服务实例。您可以在repo的samples/mock github client/文件夹中看到完整示例:

MockRestAdapter提供以下API:

setDelay
-设置网络往返延迟,以毫秒为单位。
setVariancePercentage
-设置网络往返延迟的正负差异百分比。
setErrorPercentage
-设置返回true的调用
calculateIsFailure()
的百分比。
在您的测试中,您可以调用
setErrorPercentage(100)
,以确保发生网络错误。默认情况下,抛出错误的时间是延迟的0到3倍。

1。使用adb命令是否足以满足您的需要?2.ConnectivityListener是什么软件包的一部分?嗨,Gil,ConnectivityListener是我自己的库的一部分。我希望能够运行自动检测测试,测试多个场景(连接、慢速连接、断开连接),并一直在寻找通过代码实现的方法。1。使用adb命令是否足以满足您的需要?2.ConnectivityListener是什么软件包的一部分?嗨,Gil,ConnectivityListener是我自己的库的一部分。我希望能够运行自动检测测试,测试多个场景(连接、慢速连接、断开连接),并一直在寻找通过代码实现的方法。回答得很好。实际上我是在用截击来满足我的要求。回答得不错。