单元测试,build.gradle中 testImplementation and androidTestImplementation的区别

在用Android studio 创建一个新项目的时候,会默认生成三个目录(每个目录都被称为是Source set(源码集合)):

 app/src
* ├── androidTest/java (仪器化单元测试、UI测试,比如Espresso)
* ├── main/java (业务代码)
* └── test/java  (本地单元测试,Junit4、mockito、Robolectric)

这个 androidTest 目录包含了触摸屏幕或者检查在屏幕上显示了什么的测试用例 ,在test目录下,我们最主要是进行单元测试,比如测试一个函数的正确性等等。

But test directory is not only for Unit test. You can also write Integration test like HTTP call. Even you can UI test in test directory using Robolectric library.(It's really fast rather than Espresso)

但是, 这个test目录并不是只能进行单元测试,我们也可以写一些诸如HTTP请求的集成测试。我们甚至可以进行UI测试,通过使用Robolectric类库(实验表明,Robolectric比使用Espresso要快的多)。

了解完上面这些基础知识之后,那么 testImplementation 和androidTestImplementation 到有什么区别呢?

  • testImplementation : 为 test source set 添加依赖
  • androidTestImplementation : 为 androidTest source set 添加依赖

比如:

//本地化测试
// Required -- JUnit 4 framework
testImplementation 'junit:junit:4.12'
// Optional -- Mockito framework(可选,用于模拟一些依赖对象,以达到隔离依赖的效果)
testImplementation 'org.mockito:mockito-core:3.1.0'
//仪器化测试
//Google UI测试框架
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

 

 

### 关于 `build.gradle` 和 `build.gradle.kts` 的区别Android 开发中,Gradle 构建脚本可以使用两种不同的语法编写:Groovy 和 Kotlin DSL。这两种构建文件分别对应 `build.gradle` 和 `build.gradle.kts`。 #### 1. **语法差异** - `build.gradle` 使用 Groovy 编写,这是早期 Gradle 版本中的默认语言[^1]。 - `build.gradle.kts` 则采用 Kotlin 编写的 DSL (Domain-Specific Language),它是更现代的选择[^2]。 Kotlin DSL 提供了更强的类型安全性和 IDE 支持,减少了潜在错误的可能性,并且与 Kotlin 项目更加一致[^4]。 #### 2. **功能对比** 两者的功能本质上相同,都可以完成项目的配置、依赖管理等工作。然而,在实现方式上存在一些细微差别: - 在 Groovy 中,方法调用不需要括号,而在 Kotlin DSL 中则需要显式指定参数。 - Kotlin DSL 更加严格地遵循 Kotlin 的语法规则,因此某些操作可能显得稍微复杂一点,但也更为清晰和可维护[^3]。 例如,定义仓库部分如下所示: 对于 `build.gradle`(Groovy): ```groovy repositories { maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } mavenCentral() } ``` 而对于 `build.gradle.kts` (Kotlin DSL): ```kotlin repositories { maven { setUrl("https://maven.aliyun.com/nexus/content/groups/public/") } mavenCentral() } ``` 可以看到,虽然逻辑相似,但在细节处理上有明显不同。 #### 3. **为何仅保留 `.kts` 文件?** 随着 Kotlin 成为官方推荐的语言之一,越来越多的新项目倾向于完全切换至基于 Kotlin 的工具链以保持一致性。如果一个项目选择了纯 Kotlin 路径,则可能会移除所有的 Groovy 配置文件 (`build.gradle`) 并替换为对应的 Kotlin DSL 实现(`build.gradle.kts`) 。这种做法简化了代码库结构,避免混合多种编程风格带来的混乱。 此外,当团队成员熟悉 Kotlin 后,继续沿用旧版 Groovy 可能会造成不必要的学习成本和技术债务问题。通过统一迁移到 Kotlin DSL ,能够更好地利用其优势特性如静态分析能力等来提升开发效率及稳定性。 综上所述,只存在 `build.gradle.kts` 是因为该项目采用了全 Kotlin 工具链设计思路,从而淘汰掉了传统形式下的 groovy script —— 即 `build.gradle`. ### 示例代码展示如何添加依赖项到 `build.gradle.kts` 以下是向 `build.gradle.kts` 添加依赖的一个简单例子: ```kotlin dependencies { implementation("androidx.core:core-ktx:1.9.0") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") } ``` 此片段展示了标准实践——即按照模块需求引入必要的库支持. ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值