我剛剛將我的項目轉換爲Gradle,並且工作正常。我正在嘗試爲它添加一些測試。我遵循Android Gradle用戶指南設置我的build.gradle
測試。這裏是我的build.gradle
:不使用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
類來測試我的服務。我使用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
在我的樣本測試類的每一行代碼。不知道發生了什麼事。所有這些設置的文檔都很模糊。
我也不太確定assembleDebugTest
,connectedInstrumentTest
和installDebugTest
之間的差異,根據他們對運行gradle tasks
的描述。爲了使測試對Gradle可見,有沒有必要對我的清單做些什麼?我應該在一個完全不同的項目中創建我的測試嗎?我讀過以前的人會創建單獨的測試項目,但是因爲我在build.gradle文件中爲instrumentTest設置了根目錄,所以我認爲我們現在可以從一個項目完成所有工作?
感謝您的幫助(和令人敬畏的工具!)斯科特。你是對的,我搞砸了測試目錄。 AIDL的錯誤讓我誤解了實際的問題。 –