[英]Instrumentation test not creating with Gradle
我剛剛將我的項目轉換為Gradle,並且運行良好。 我正在嘗試向其中添加一些測試。 我遵循了Android Gradle用戶指南來設置帶有測試的build.gradle
。 這是我的build.gradle
:
buildscript {
repositories {
maven {
url 'http://repo1.maven.org/maven2'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
testPackageName "com.instrumentTest.java"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('src/instrumentTest')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
我在src/
下創建了一個名為com.instrumentTest.java
的包,並在其中放入了示例ServiceTest.java
類來測試我的Service。 我使用gradle aDT
運行測試並得到以下信息:
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':<MyProject>:compileDebugAidl'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
Caused by: com.android.ide.common.internal.LoggedErrorException: Failed to run command:
<some big command>
Error Code:
1
Output:
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "public"
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "public"
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "class"
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "MyServiceTest"
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "extends"
\src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "ServiceTestCase<MyService>"
它輸出syntax error don't know what to do with
示例測試類中的每一行代碼。 不太確定發生了什么。 設置所有這些的文檔非常模糊。
我也不確定基於運行gradle tasks
的描述, assembleDebugTest
, connectedInstrumentTest
和installDebugTest
之間的區別。 為了讓Gradle可以看到測試,我需要對清單做些什么嗎? 我應該在完全不同的項目中創建測試嗎? 我讀到以前人們會創建單獨的測試項目,但是由於我在build.gradle文件中設置了instrumentTest的根目錄,因此我想現在可以從一個項目中完成所有工作了?
在build.gradle中,您聲明了InstrumentTest文件夾位於src / instrumentTest中 ,這意味着,如果您在com.instrumentTest
包中包含一個內部測試,則該測試應該位於src / instrumentTest / com / instrumentTest / MyServiceTest中 。 相反,您將文件放在src / com / instrumentTest / java / MyServiceTest 。
由於某種原因,我不太了解它正在嘗試使用AIDL編譯器進行編譯,而您的Java文件不是有效的AIDL。 如果將其移動到InstrumentTest期望的目錄中,則應該可以編譯。
在http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks上有有關Gradle任務的說明。
如果您不想弄亂gradle文件,可以改用此方法: http ://rexstjohn.com/unit-testing-with-android-studio/
基本上,您可以設置並運行Android測試配置,該配置可以運行模塊中特定包,類或方法中的所有測試。 因此,您可以在任何地方設置測試類。 它將選擇測試類,而無需修改build.gradle文件和運行命令。 這也回答了您的最后一個問題,它可能全部來自一個項目。
我剛開始使用Android Studio和Gradle,但直到我嘗試了上述方法后,才能一開始就無法正常運行測試。 我發現僅僅為了建立一個簡單的測試而不得不修改build.gradle文件就很奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.