Gradle Roboletric для другого типа сборки

#android #build #gradle #android-gradle-plugin #robolectric

#Android #сборка #gradle #android-gradle-плагин #robolectric

Вопрос:

Я пытаюсь заставить Roboletric работать для моего проекта Android. Что у меня есть прямо сейчас, так это

 task roboletricTest(type: Test, dependsOn: "assemble") {
testClassesDir = sourceSets.robolectricTest.output.classesDir

android.sourceSets.main.java.srcDirs.each { dir ->
    def buildDir = dir.getAbsolutePath().split('/')
    buildDir =  (buildDir[0..(buildDir.length - 4)]   ['build', 'intermediates', 'classes', 'debug']).join('/')
    sourceSets.robolectricTest.compileClasspath  = files(buildDir)
    sourceSets.robolectricTest.runtimeClasspath  = files(buildDir)
}

classpath = sourceSets.robolectricTest.runtimeClasspath
}
  

Проблема в том, что эта задача зависит от: «assembly», поэтому всякий раз, когда я хочу запустить тесты, он будет создавать все разные типы сборки (т. Е. Debug и release). Я хочу иметь возможность динамически устанавливать переменную dependsOn в зависимости от того, хочет ли программист assembleDebug или assembleRelease. Я знаю, что могу создать две разные задачи для решения этой проблемы, но я хочу более элегантный способ создания одной задачи, которая работала бы динамически (потому что у меня много типов сборки).
Есть ли способ динамически проверять, будет ли выполнена задача?

Комментарии:

1. Какой плагин вы используете для запуска теста? Какая версия Robolectric?

2. Не используется плагин. Использование версии 2.2

3. Robolectric 2.3 уже выпущен. Вам не нужны пользовательские задачи, лучше использовать плагин. Проверьте это github.com/emartynov/UrlSetter/blob/master/build.gradle