Android,Gradle。 如何构build应用程序并从testing应用程序运行testing

我有android项目和androidtesting项目里面,位于文件夹testing。 这些项目的结构就像月食一样

+ -src
| – 水库
| – 库
| – testing
| …..

我使用gradle。 我想要的只是构build应用程序,运行unit testing并获取它们的报告。 但是我不明白如何做对。 我在根文件夹中创buildbuild.gradle文件

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' android { compileSdkVersion 18 buildToolsVersion "18.1.1" defaultConfig { minSdkVersion 8 targetSdkVersion 18 testPackageName "ua.cooperok.stringcalc.tests" 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'] } unitTest { java.srcDir file('tests/src') resources.srcDir file('tests/res') } } configurations { unitTestCompile.extendsFrom runtime unitTestRuntime.extendsFrom unitTestCompile } dependencies { unitTestCompile files("$project.buildDir/classes/release") } task unitTest(type:Test){ description = "Run unit tests..." testClassesDir = android.sourceSets.unitTest.output.classesDir classpath = android.sourceSets.unitTest.runtimeClasspath } build.dependsOn unitTest } 

但是当我运行gradle构build时出现错误
在源集合unit testing中找不到属性“输出”。

另外,据我了解,要获得报告,我需要应用插件“android报告”,但是当我这样做,我得到错误
无法添加名为“android”的扩展名,因为已经有一个名称已经注册的扩展名。

我应该这样做,或者我必须在我的testing应用程序项目中创build新的gradle.build文件?

UPDATE

我修正了错误与输出,并使gradle构build成功,但我不明白什么是goind。 我故意不通过testing,但是gradle build仍然是成功的。
我做了什么:
1.我从android部分移动任务unitTest到根,然后,我的testing项目开始编译,但有一个错误'packackage android.test not found'
2.为了解决这个错误,我添加到Android源的类pathpath,所以之后,该gradle构build成功,但真的不明白为什么它总是成功,即使当testing失败

我仍然不明白如何从testing中获得报告

这是我的新build.gradle文件

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6+' } } apply plugin: 'android' android { compileSdkVersion 18 buildToolsVersion "18.1.1" defaultConfig { minSdkVersion 8 targetSdkVersion 18 testPackageName "ua.cooperok.stringcalc.tests" testInstrumentationRunner "android.test.InstrumentationTestRunner" } sourceSets { main { manifest.srcFile file('AndroidManifest.xml') java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } dependencies { compile fileTree(dir: 'libs', include: '*.jar') } } sourceSets { unitTest { java.srcDirs = ['tests/src'] resources.srcDirs = ['tests/src'] } } configurations { unitTestCompile.extendsFrom runtime unitTestRuntime.extendsFrom unitTestCompile } dependencies { unitTestCompile files("$project.buildDir/classes/release") unitTestCompile 'junit:junit:4.11' compile fileTree(dir: 'libs', include: '*.jar') } task unitTest(type:Test, dependsOn: assemble) { description = "run unit tests" testClassesDir = sourceSets.unitTest.output.classesDir classpath = files("$System.env.ANDROID_HOME/sources/android-18") //actualy I didn't get any report getReports().getJunitXml().setOutputPerTestCase(true) } build.dependsOn unitTest 

Solutions Collecting From Web of "Android,Gradle。 如何构build应用程序并从testing应用程序运行testing"

我find解决scheme。 我被几个主题所迷惑,并认为我需要为unit testing创​​build单独的任务。 事实上,这很容易。
我没有改变我的项目结构,只是build.gradle文件。 构build我运行的应用程序
gradle clean connectedCheck构build
connectedCheck从我的testing项目运行unit testing,如果一些testing失败 – gradle构build也会失败

它在这里最终版本

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6+' } } apply plugin: 'android' android { compileSdkVersion 18 buildToolsVersion "18.1.1" defaultConfig { minSdkVersion 8 targetSdkVersion 18 testPackageName "ua.cooperok.stringcalc.tests" testInstrumentationRunner "android.test.InstrumentationTestRunner" } sourceSets { main { manifest.srcFile file('AndroidManifest.xml') java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } instrumentTest { java.srcDirs = ['tests/src'] manifest.srcFile file('tests/AndroidManifest.xml') resources.srcDirs = ['tests/src'] res.srcDirs = ['tests/res'] assets.srcDirs = ['tests/assets'] } } dependencies { compile fileTree(dir: 'libs', include: '*.jar') } //Signing apk if(project.hasProperty("signingPropertiesPath")) { File propsFile = new File(System.getenv('HOME') + "/" + project.property("signingPropertiesPath")) if(propsFile.exists()) { Properties props = new Properties() props.load(new FileInputStream(propsFile)) //loading keystore properties signingConfigs { release { storeFile file(propsFile.getParent() + "/" + props['keystore']) storePassword props['keystore.password'] keyAlias props['keyAlias'] keyPassword props['keyPassword'] } } buildTypes { release { signingConfig signingConfigs.release } } } } }