首页 > 解决方案 > 为什么 Android Studio 编译我的整个应用程序以启动原始单元测试?

问题描述

每当我“从边距菜单”启动一个单元测试时(见截图),它没有任何 Android 依赖项,Android Studio 编译我的整个应用程序只运行一个原始断言。

这是我的应用程序需要完全编译的预期行为吗?我期待单元测试非常快,并且只编译测试中提到的那些类,并且它们的依赖类将被编译用于单元测试。

从边距菜单运行测试

此外,如果我在测试中添加任何 Android 类,例如Applicationor AppCompatActivity,它仍然会成功完成。每一篇关于 Android 测试的文章都说,不可能运行依赖于任何 Android 库的单元测试。

标签: androidandroid-studiounit-testinggradlejunit

解决方案


Gradle 项目的结构通常具有main源集和test源集。它们分别编译并test配置为依赖于main. Gradle 所知道的是,main如果它应该运行,它需要它test。因此它main在编译之前编译所有内容testtest如果您查看“构建”面板,您可以在编译时看到这一点。事实上,如果其中的任何类main有语法错误,它甚至不会尝试编译test,即使test.


推荐阅读