合理利用單元測試,不僅可以保證軟件開發的質量,而且可以大大提高工作效率。本文介紹Android Studio中單元測試相關內容和遇到的問題。
1.添加依賴(build.gradle)
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- testImplementation:引入的依賴是Java Unit單元測試,是運行在當前電腦的jvm上的單元測試。
JUnit單元測試,用來放不需要Android依賴的單元測試類,運行在當前電腦的jvm上的單元測試,速度快,適合只是對java代碼功能進行單元測試。
- androidTestImplementation:引入的依賴是Android單元測試,是運行在Android環境的單元測試。
Android單元測試,運行在當前電腦的jvm上的單元測試,執行測試的時候需要Android連接設備,速度比較慢,適合需要調用Android api的單元測試。
2.JUnit用法
可以靜態import方法引入了相應的包(import static org.junit.Assert.*;)
Assert類中主要方法如下:
方法名 | 方法描述 |
assertEquals | 斷言傳入的預期值與實際值是相等的 |
assertNotEquals | 斷言傳入的預期值與實際值是不相等的 |
assertArrayEquals | 斷言傳入的預期數組與實際數組是相等的 |
assertNull | 斷言傳入的對象是爲空 |
assertNotNull | 斷言傳入的對象是不爲空 |
assertTrue | 斷言條件爲真 |
assertFalse | 斷言條件爲假 |
assertSame | 斷言兩個對象引用同一個對象,相當於“==” |
assertNotSame | 斷言兩個對象引用不同的對象,相當於“!=” |
assertThat | 斷言實際值是否滿足指定的條件 |
注意:上面的每一個方法,都有對應的重載方法,可以在前面加一個String類型的參數,表示如果斷言失敗時的提示。
JUnit中的常用註解:
註解名 | 含義 |
@Test | 表示此方法爲測試方法 |
@Before | 在每個測試方法前執行,可做初始化操作 |
@After | 在每個測試方法後執行,可做釋放資源操作 |
@Ignore | 忽略的測試方法 |
@BeforeClass | 在類中所有方法前運行。此註解修飾的方法必須是static void |
@AfterClass | 在類中最後運行。此註解修飾的方法必須是static void |
@RunWith | 指定該測試類使用某個運行器 |
@Parameters | 指定測試類的測試數據集合 |
@Rule | 重新制定測試類中方法的行爲 |
@FixMethodOrder | 指定測試類中方法的執行順序 |
執行順序:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
3.報錯問題
報錯:Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ.
解決:在 build.gradle 添加
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}
dependencies {
...
}
4.實例
public class AndroidTest {
@Before
public void init() throws Exception {
//初始化
}
@Test
public void test() throws Exception {
//開始測試
}
}