一般單元測驗用在后臺的 API,但是如果不巧,要做客戶端的 sdk,好像后臺的這個單元測驗的流程,也是可以用的,下面來看看怎么配置 android sdk 的單元測驗
build.gradle 配置
dependencies {
// .....
testImplementation 'junit:junit:4.12'
testImplementation "androidx.test:core:1.1.1"
testImplementation "androidx.test.ext:junit:1.1.1"
testImplementation "org.robolectric:robolectric:4.2.1"
testImplementation 'com.android.support.test:runner:0.5'
testImplementation 'com.android.support.test:rules:0.5'
testImplementation 'org.mockito:mockito-core:2.19.0'
}
測驗用例類 ExampleUnitTest.java
測驗用例
@Config(sdk = 28)
@RunWith(AndroidJUnit4.class) // 用于獲取背景關系的注解
public class ExampleUnitTest {
@Test
public void testCase() {
// 獲取背景關系,用于獲取資源
Context context = ApplicationProvider.getApplicationContext();
// mock 異步事件
View.OnClickListener mqttActionCallBack = mock(View.OnClickListener.class);
// 評判結果
assertEquals(4, 2 + 2);
}
}
測驗用例運行效果
附加說明
細心的你,應該發現了為什么要增加 @Config(sdk = XX) 這個注解呢,這里是為了修復下面這個錯誤
ExampleUnitTest.testCase: Package targetSdkVersion=29 > maxSdkVersion=28
調整 build.gradle 中 targetSdkVersion 這個引數也是可以的,另外一種改法就是使用 @Config(sdk = XX) 這個注解,來限定測驗用例的依賴的 sdk 版本
那有人又會問了 @RunWith(AndroidJUnit4.class) 又是干嘛的,好吧我們先看看沒有這個注解跑出來是什么效果
java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.
at androidx.test.platform.app.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45)
at androidx.test.core.app.ApplicationProvider.getApplicationContext(ApplicationProvider.java:41)
at com.qcloud.iot_sdk_java.ExampleUnitTest.testCase(ExampleUnitTest.java:29)
測驗用例的 29 行對應的是獲取背景關系
Context context = ApplicationProvider.getApplicationContext();
現在大家應該明白了吧,這樣可以限定是 android 的單元測驗,后續就可以獲取 android 層面經常需要使用的背景關系
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/291892.html
標籤:其他
上一篇:Glide三級快取理解詳細
