如何让 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函数脚本文件或可运行程序的名称。请检查名称 )