如何让 Android Studio 将文件识别为源(测试)

Posted

技术标签:

【中文标题】如何让 Android Studio 将文件识别为源(测试)【英文标题】:How to get Android Studio to recognize file as source (test) 【发布时间】: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(创建测试的快捷方式),它会提示在与我的源文件相同的目录下创建测试,我不希望这样做

【问题讨论】:

【参考方案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!。 *** 上的大多数答案告诉我只需在项目模块设置中向上移动 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 仪器测试之间进行选择。

【讨论】:

以上是关于如何让 Android Studio 将文件识别为源(测试)的主要内容,如果未能解决你的问题,请参考以下文章

错误记录在 Android Studio 的 Terminal 终端执行 gradlew 报错 ( 无法将“gradlew”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称 )

错误记录在 Android Studio 的 Terminal 终端执行 gradlew 报错 ( 无法将“gradlew”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称 )

HMS Cloud Debugging 在 Android Studio 中不被识别为设备

如何使用Android Studio开发Gradle插件

我可以让 git 将 UTF-16 文件识别为文本吗?

如何让 iOS 应用识别为 AudioUnit?