Я был в состоянии получить эту работу на основе этого solution
В общем, попробуйте добавить следующую строку в ваш build.gradle
:
sourceSets {
testLocal {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/resources')
}
}
dependencies {
// Dependencies for your production code here.
compile 'some.library'
// localTest dependencies, including dependencies required by production code.
testLocalCompile 'some.library'
testLocalCompile 'junit:junit:4.11'
testLocalCompile 'com.google.android:android:4.1.1.4'
testLocalCompile 'org.robolectric:robolectric:2.2'
}
task localTest(type: Test, dependsOn: assemble) {
testClassesDir = sourceSets.testLocal.output.classesDir
android.sourceSets.main.java.srcDirs.each { dir ->
def buildDir = dir.getAbsolutePath().split('/')
buildDir = (buildDir[0..(buildDir.length - 4)] + ['build', 'classes', 'debug']).join('/')
sourceSets.testLocal.compileClasspath += files(buildDir)
sourceSets.testLocal.runtimeClasspath += files(buildDir)
}
classpath = sourceSets.testLocal.runtimeClasspath
}
check.dependsOn localTest
Не забудьте изменить ваш *Test.java
к @RunWith(RobolectricGradleTestRunner.class)
:
public class RobolectricGradleTestRunner extends RobolectricTestRunner {
public RobolectricGradleTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
@Override
protected AndroidManifest getAppManifest(Config config) {
String pwd = YourApplication.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String root = pwd + "../../../src/main/";
return new AndroidManifest(
Fs.fileFromPath(root + "AndroidManifest.xml"),
Fs.fileFromPath(root + "res"),
Fs.fileFromPath(root + "assets"));
}
}
После этого вы сможете выполнить свой тест через gradle compileDebugJava localTest
. Если я правильно помню, для этого потребуется более новая версия градиента (возможно, 1,8 или 1,9)
Вы должны сделать проект MyAppTest зависимым от проекта MyApp –
Например, например, https://github.com/Goddchen/Android-Gradle -Examples/tree/master/Gradle% 20Library% 20Projects –
@EugenMartynov в MyAppTest Я настроил параметры.gradle с includeFlat 'MyApp', и я также установил зависимость в build.gradle (проект компиляции (': MyApp')) без везения. Когда я запускаю тестовую задачу в Gradle, тест не запускается. –