【问题标题】:Why does Android Studio compile my whole app to launch a primitive unit test?为什么 Android Studio 编译我的整个应用程序以启动原始单元测试?
【发布时间】:2021-12-01 23:54:34
【问题描述】:

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

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

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

【问题讨论】:

  • 它真的很慢吗?至少第二次它应该启动得非常快。不涉及任何其他类的单元测试有什么好处?优化该用例的启动时间似乎并不能很好地利用有限的资源。

标签: android android-studio unit-testing gradle junit


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2011-01-23
    • 2020-07-26
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2011-10-04
    相关资源
    最近更新 更多