【问题标题】:How to get Android Studio to recognize file as source (test)如何让 Android Studio 将文件识别为源(测试)
【发布时间】:2014-03-22 13:19:48
【问题描述】:

我正在尝试为一个 android 项目创建 Robolectric 测试(哎呀,我什至很乐意让它们进行单元测试)

我的文件夹目录为:

MyApp
    - app
        - src
            - main
                - java
                    - com.myapp
                        HelloWorld
            - test
                - java
                    - com
                        - myapp
                            HelloWorldTest.java

问题是HelloWorldTest.java 无法运行,因为它未被识别为源。我如何设置它以便我可以运行这个类作为测试?????

如果我尝试执行 CMD + SHIFT + T(创建测试的快捷方式),它会提示在与我的源文件相同的目录下创建测试,我不希望这样做

【问题讨论】:

    标签: android junit intellij-idea gradle android-studio


    【解决方案1】:

    在 Android Studio 1.0 中,方案发生了一些变化。

    你的路径应该是 (app)/src/androidTest/java/com/myapp/HelloWorldTest.java

    这是我在一个新的 Android Studio 项目中设置单元测试的方法:

    • 在 Android Studio 中打开应用。
    • 将项目浏览器(左侧窗口)设置为显示“项目”模式。点击左上角的小下拉菜单并选择“项目”。
    • 右键单击“src”目录,“新建 -> 目录”。
    • 调用新目录androidTest
    • 右键单击 androidTest 并添加一个“java”目录。它将显示为绿色(表示它是一个测试 src 目录)。
    • 现在再次右键单击并添加一个包,例如com.mycompany.myapp.tests
    • 添加一个扩展 AndroidTestCase 的新类。

    现在添加一个新的配置进行测试:

    • 编辑配置
    • 点击左上角的+
    • 选择 Android 测试
    • 在“常规”选项卡中选择您的主模块。
    • 点击确定

    现在您可以运行测试了。

    【讨论】:

      【解决方案2】:

      在 Android Studio 1.3 中:

      构建 > 选择构建变体

      在 Build Variants 窗口中,选择 Unit Tests 作为测试工件。

      【讨论】:

      • 选择构建变体后,该文件夹将作为有效的源 java 文件夹“激活”。
      【解决方案3】:

      遵循此处提供的指南:

      http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing

      这里

      http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure

      总结:

      正如第一个链接所说,您必须将 test 目录重命名为 instrumentTest,以便 Studio 可以自动检测您的测试项目的源集

      另一种方法是,您可以将 tests 目录放在根目录(与您的主目录一起),并以 tests/java 之类的方式获取源,如第二个链接所述

      instrumenttest.setRoot("tests")
      

      在android标签下的sourceSets配置中

      来自文档

      注意:setRoot() 将整个 sourceSet(及其子文件夹)移动到一个 新建文件夹。这会将 src/instrumentTest/* 移动到 tests/* 这是 Android 特定的,不适用于 Java 源集。

      【讨论】:

      • 感谢您的来信。我尝试了第一种方法,但我仍然不断收到!!! JUnit version 3.8 or later expected:java.lang.RuntimeException: Stub!。 stackoverflow 上的大多数答案告诉我只需在项目模块设置中向上移动 JUnit,但这并不能解决问题:/
      • 您能否在您的问题中包含File > Project Structure > yourmodule > Dependencies 的屏幕截图以及build.gradle 文件?
      • 对于 Android Studio 1.0 及更高版本已更改 - 该文件夹现在称为 androidTest。请看我的回答
      【解决方案4】:

      类似的问题困扰了很久,终于解决了。

      要让 Android Studio 将 src/test 目录识别为源,您必须在“Build Variants”->“Test Artifact:”中选择“Unit Tests”

      但是,在我的项目中,我没有“单元测试”,而只有“Android 仪器测试”。这是 Android 中两种不同类型的单元测试。

      见:http://developer.android.com/training/testing/unit-testing/index.html
      1。单元测试 - 本地单元测试
      2。 Android Instrumentation 测试 - Instrumented 单元测试

      这一点都不明显,但在“构建变体”->“测试工件:”中,当您的项目中有多个模块时,您没有“单元测试”选项。

      我的项目目录如下所示:
      :项目
      -:模块1
      -:模块2
      -:模块3
      -:模块4
      -:模块5
      -settings.gradle -> 包括 ':module1',':module2', ...
      这些模块并没有真正相互链接,但对于许多其他来自 Eclipse 的开发人员来说,这就是必须的。那是个问题。

      然后我只为我的模块创建了单独的项目:
      :项目
      -:模块1
      -settings.gradle -> 包含':module1'

      在“构建变体”->“测试工件:”中出现“单元测试”之后,我现在可以在本地单元测试和 Android 仪器测试之间进行选择。

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 1970-01-01
        • 2014-03-30
        • 2016-05-11
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多