我正在使用robolectric gradle plugin为Android编写单元测试。除了能够使用Android Studio正确调试我的测试之外,到目前为止一切正常。
我做了一些调查(http://forums.gradle.org/gradle/topics/how_do_you_attach_a_debugger_to_gradle_so_that_i_can_debug_it_running_a_task),结果是:
从控制台启动可调试的gradle配置
gradlew -DtestDebug.debug=true app:clean app:testDebug
这将停止gradle构建并等待5005
在Android Studio中创建“远程”启动配置,将在端口5005上附加
在调试模式下从Android Studio启动该配置
每次都必须完成步骤1 + 3,我想调试我的测试。这很烦人。 我想有办法,我可以直接从intelliJ启动gradle构建,它会自动附加调试器。我怎么能这样做?
信息(当然,理想的解决方案是我可以通过IntelliJ的JUnit配置直接启动单元测试,因为这样可以给我IDE支持,整齐地显示失败和传递但是我遇到了JUnit构建没有找到Manifest文件等问题,所以我暂时放弃了。)
** Gradle构建文件**
apply plugin: 'com.android.application'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.robolectric:robolectric-gradle-plugin:0.12.+'
}
}
apply plugin: 'robolectric'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
packagingOptions {
exclude 'LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
}
defaultConfig {
applicationId "test.fs.test"
minSdkVersion 14
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'org.hamcrest:hamcrest-integration:1.1'
androidTestCompile 'org.hamcrest:hamcrest-core:1.3'
androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
androidTestCompile('junit:junit:4.11') {
exclude module: 'hamcrest-core'
}
androidTestCompile('org.robolectric:robolectric:2.3') {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}
}
apply plugin: 'idea'
idea {
module {
testOutputDir = file('build/test-classes/debug')
}
}