2015-02-26 3 views
7

У меня есть 2 модуля: A и B.Android Gradle 1.1 - добавление тестовой зависимости от тестов другого проекта

- A - это автономный модуль. Его тесты выполняются просто отлично сами по себе.
- B является зависимым модулем. Его тесты требуют определенного файла в тестовую папку «s (один тестовый файл в B проходит один в )

 

Вот что я считаю, что соответствующие части B «s build.gradle:

android { 
    ... 
    sourceSets { 
    test.java.srcDirs += "../A/src/test/java" 
    } 
} 

dependencies { 
    compile project(':A') 

    testCompile 'junit:junit:4.10' 
    testCompile 'org.robolectric:robolectric:2.4' 
    testCompile 'org.mockito:mockito-core:1.9.5' 
} 

Хотя это технически работает для того, что мне нужно - это имеет неприятный побочный эффект, что всякий раз, когда я RU n A, а также все тесты B. Мне бы очень хотелось, если бы это было не так.

 

Я использую Android Gradle 1.1 (наряду с Android Studio 1.1), и я думаю, что это вызывает у меня некоторые проблемы. Я перепробовал все решения я мог бы найти, - к сожалению, ни один из них не кажется, применяются для Android Gradle 1.1 - например:

Демонтаж sourceSets из B «ы build.gradle и добавление (к B» зависимостей s) линия

testCompile project(':A').sourceSets.test.output 

продуцирует ошибка сборки Could not find property 'test' on SourceSet container.

 

Я об этом неправильно? Есть ли более простой/лучший способ включить тестовые файлы через модули? Я довольно новичок в Gradle/Android Studio, поэтому вполне возможно, что мне не хватает мертвого очевидного решения.

+0

Добавление теста A к исходным файлам B => запуск A тесты запускают тесты B? Это не имеет смысла в моей голове, это все еще так? BTW, альтернативный способ заключается в том, чтобы упаковать тесты A в качестве банки и использовать их как зависимость B testCompile. – RaGe

ответ

0

Проверьте все ваши модули по дереву, используя команду:

gradle projects 

Это будет список всех модулей вашего проекта, и вы можете увидеть, если вы настраиваете ваши вложенные проекты в правильном направлении. Также команда запуска:

gradle --gui 

Это будет список всех задач для всех модулей, и вы всегда можете запустить один модуль независимо друг от друга, например,

gradle A:tasks 
gradle A:test 
gradle B:test 

ИЛИ как

gradle A:tasks B:test 

Примечание: Вам не нужно указывать А если это корень проекта и B, C, D подмодуль, но для подмодулей вам нужно указать.Когда вы делаете:

gradle --gui 

Вы можете дважды нажать на любую задачу, чтобы увидеть, как это работает, и вы можете сделать то же самое вручную из командной строки. Надеюсь, это поможет