Created
February 18, 2014 15:20
-
-
Save mfremont/9073002 to your computer and use it in GitHub Desktop.
Example build.gradle for a unit test submodule in an Android project.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Example build descriptor that builds and runs Robolectric unit tests in src/test for an Android | |
* app project in the 'app' module of the project. | |
*/ | |
apply plugin: 'java' | |
test { | |
// Robolectric expects to find AndroidManifest.xml and res/ in the working directory | |
workingDir androidManifestDir(project(':app'), 'main') | |
} | |
dependencies { | |
testCompile project(':app') | |
testCompile androidProjectClassesDependency(project(':app'), 'debug') | |
testCompile 'junit:junit:4.11' | |
testCompile 'org.robolectric:robolectric:2.2' | |
testCompile 'org.mockito:mockito-all:1.9.5' | |
testCompile androidSdkDependency(project(':app')) | |
} | |
/** | |
* Creates a FileCollection for expressing a dependency on the Android compileSdkVersion of the | |
* specified project instance. Intended to be used in a dependencies: | |
* | |
* <code> | |
* dependencies { | |
* testCompile androidSdkDependency(project(':app')) | |
* // ... | |
* } | |
* </code> | |
* | |
* @param androidProject a reference to a gradle Android project, such as project(':app') | |
* | |
* @return a FileCollection that references the appropriate android.jar | |
*/ | |
def androidSdkDependency(androidProject) { | |
return files([androidProject.android.plugin.sdkDirectory, 'platforms', | |
androidProject.android.compileSdkVersion, 'android.jar'].join(File.separator)) | |
} | |
/** | |
* Creates a FileCollection for expressing a dependency on the classes of the the specified | |
* project/variant combination. For example: | |
* | |
* <code> | |
* dependencies { | |
* testCompile androidProjectClassesDependency(project(':app'), 'debug') | |
* // ... | |
* } | |
* </code> | |
* | |
* @param androidProject a reference to a gradle Android project, such as project(':app') | |
* @param variant the build variant, such as 'debug' or a flavor | |
* | |
* @return a FileCollection that references the build output directory for the Android project variant | |
*/ | |
def androidProjectClassesDependency(androidProject, variant) { | |
return files([androidProject.buildDir, 'classes', variant].join(File.separator)) | |
} | |
/** | |
* Returns the directory that contains the AndroidManifest.xml for the specified project source set. | |
* Intended to be used to set the workingDir of a test closure so that Robolectric can find the | |
* manifest file: | |
* | |
* <code> | |
* test { | |
* workingDir androidManifestDir(project(':app'), 'main') | |
* } | |
* </code> | |
* | |
* @param androidProject a reference to a gradle Android project, such as project(':app') | |
* @param sourceSetName the name of the source set | |
* | |
* @return the directory as a string | |
*/ | |
def androidManifestDir(androidProject, sourceSetName) { | |
def manifest = androidProject.android.sourceSets[sourceSetName].manifest.getSrcFile() | |
return manifest.getParentFile().getAbsolutePath() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment