Android Studio中單元測試

合理利用單元測試,不僅可以保證軟件開發的質量,而且可以大大提高工作效率。本文介紹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 {
      //開始測試
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章