为什么 Android Studio 编译我的整个应用程序以启动原始单元测试?
Why does Android Studio compile my whole app to launch a primitive unit test?
每当我“从边缘菜单”(见屏幕截图)启动单元测试时,它没有任何 Android 依赖项,Android Studio 只会将我的整个应用程序编译为 运行 一个原始断言。
这是我的应用程序需要完全编译的预期行为吗?我期望单元测试非常快,并且只编译测试中提到的那些 classes 及其依赖的 classes 将被编译用于单元测试。
此外,如果我添加任何 Android class,例如Application
或 AppCompatActivity
,测试它仍然会成功完成。每篇关于 Android 测试的文章都说不可能 运行 依赖任何 Android 库的单元测试。
Gradle 项目的结构通常包含一个 main
源集和一个 test
源集。它们是单独编译的,并且 test
配置为依赖于 main
。 Gradle 只知道它需要 main
如果它应该 运行 test
。因此它在编译 test
之前编译所有 main
。如果您查看“构建”面板,您可以在编译 test
时看到它的运行情况。事实上,如果 main
中的任何 class 有语法错误,它甚至不会尝试编译 test
,即使 test
不需要 class。
每当我“从边缘菜单”(见屏幕截图)启动单元测试时,它没有任何 Android 依赖项,Android Studio 只会将我的整个应用程序编译为 运行 一个原始断言。
这是我的应用程序需要完全编译的预期行为吗?我期望单元测试非常快,并且只编译测试中提到的那些 classes 及其依赖的 classes 将被编译用于单元测试。
此外,如果我添加任何 Android class,例如Application
或 AppCompatActivity
,测试它仍然会成功完成。每篇关于 Android 测试的文章都说不可能 运行 依赖任何 Android 库的单元测试。
Gradle 项目的结构通常包含一个 main
源集和一个 test
源集。它们是单独编译的,并且 test
配置为依赖于 main
。 Gradle 只知道它需要 main
如果它应该 运行 test
。因此它在编译 test
之前编译所有 main
。如果您查看“构建”面板,您可以在编译 test
时看到它的运行情况。事实上,如果 main
中的任何 class 有语法错误,它甚至不会尝试编译 test
,即使 test
不需要 class。