单元测试入门

2023-02-19  本文已影响0人  慎独静思

咱们平时改代码时经常会有牵一发而动全身全身的情况,改完之后比较慌,不知道会引起什么问题,怕有考虑不全的情况,摁下这个问题那个问题又起来了,怎么避免这种情况呢?
考虑引入单元测试吧,它可以为我们的软件质量提供强有力的保证。

我们在单元测试中经常用的库有JUnitMockitoRobolectricEspresso

测试金字塔

测试金字塔包含三类测试:小型测试,中型测试,大型测试。

通常建议各类测试占比为:小型测试占 70%,中型测试占20%,大型测试占10%。

我们新建一个工程之后通常包含两个测试目录,androidTest和test目录

以下内容建议使用单元测试:ViewModels或Presenters,数据层尤其是repositories,工具类等。
单元测试中要覆盖正常的case和边界case,比如网络错误,除以0等情况。
不要用单元测试验证不属于你的代码,比如framework或库的正确行为。
activities,fragments或services等系统入口,因为没有太多逻辑,所以不适合用单元测试验证。

屏幕UI测试包含用户交互行为,如点击,输入等,建议每个界面一个测试类。
用户交互测试验证用户界面跳转流程。

添加测试依赖:

dependencies {
  // Required -- JUnit 4 framework
  testImplementation "junit:junit:$jUnitVersion"
  // Optional -- Robolectric environment
  testImplementation "androidx.test:core:$androidXTestVersion"
  // Optional -- Mockito framework
  testImplementation "org.mockito:mockito-core:$mockitoVersion"
  // Optional -- mockito-kotlin
  testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
  // Optional -- Mockk framework
  testImplementation "io.mockk:mockk:$mockkVersion"
}

testImplementation为本地测试添加依赖, androidTestImplementation为仪器测试添加依赖。

除了这些测试还包括性能测试,monkey测试等。

参考:

  1. Android单元测试只看这一篇就够了
  2. Android单元测试研究与实践
  3. 构建本地单元测试
  4. 测试应用的 Activity
  5. 测试应用的 Fragment
  6. mockito
  7. Robolectric
  8. JUnit
上一篇下一篇

猜你喜欢

热点阅读