Ответ 1
У вас есть плагин Spoon, но работает с gradle :app:connectedCheck
. Сначала сделайте эти изменения, затем запустите с помощью gradle spoon
Комментировать androidTest.setRoot
любой другой build.gradle другой, что основной пакет
Добавьте их в build.gradle
основного пакета:
В теге android
sourceSets { //this one may not be needed. But wont hurt.
androidTest.setRoot('src/androidTest')
}
Изменить тег spoon
:
spoon {
debug = true
testSizes = ['small', 'medium', 'large'] <<--- Change this to run specific test sizes
if (project.hasProperty('spoonClassName')){
className = project.spoonClassName
}
}
Для запуска
Все тесты:
gradle ложка
Специфический класс испытаний
gradle spoon -PspoonClassName = [THE.PACKAGE.NAME]
Изменить
После прочтения вашего редактирования "Редактировать2" я вижу, что это будет указывать только определенный класс для запуска, а не конкретный пакет. К сожалению, я не нашел решения для этого, только обход. Я построил bash script, и в нем я добавил свои классы для тестирования, например:
Шаг 1: Создайте файл в корне вашего Android-проекта: runAllTests.sh
Шаг 2: Отредактируйте .sh
, чтобы выглядеть так:
#!/bin/sh
date +%b-%dT%H.%M > timestamp.out
sites="$HOME"/path/to/project/root
timestamp="$(cat "$sites"/timestamp.out)"
result_folder="$sites"/results
destdir="$result_folder/Results-$timestamp"
mkdir -p "$destdir"
echo "Directory created: ${destdir##*/}"
<---------- Here you start running the test --------------->
echo "Starting Master Setup"
gradle spoon -PspoonClassName=com.espresso.test.MasterSetup
cp -r "$sites"/app/build/spoon "$destdir"/MasterSetup
echo "Results saved to MasterSetup"
echo "Starting WorkoutSchedule"
gradle spoon -PspoonClassName=com.espresso.test.CupcakeSchedule
cp -f "$sites"/app/build/spoon "$destdir"/WorkoutSchedule
echo "Results saved to WorkoutSchedule"
echo "Starting Setting.test"
gradle spoon -PspoonClassName=com.espresso.test.Settings
cp -r "$sites"/app/build/spoon "$destdir"/Settings
echo "Results saved to Settings"
Шаг 3: Предоставьте разрешения script
-
cd
в script - type
chmod u+x runAllTest.sh
Итак, что это делает:
-
Сначала создается timestamp.out. Я использую это, чтобы сохранить результаты в файл снова и снова, не перезаписывая предыдущие результаты. Вам не нужна эта часть.
-
Затем он создает папку результатов в корне вашего проекта, если она еще не существует.
-
Затем он создаст папку внутри папки результатов с именем Results-SOME-DATE.
-
Наконец, каждый тест будет запущен, сохранив результаты в обычном месте вашего проекта. (Внутренняя сборка/ложка). После завершения теста она скопирует результаты в папку результатов и соответствующим образом назовет каждый результат теста, поэтому легко увидеть, что все ваши тесты выполнялись.
ПРИМЕЧАНИЕ. Этот script был написан для MAC. Если в ваших окнах или что-то еще, этот script может потребоваться внести изменения.
Дополнительно:. Вам будет неудобно открывать в каждую папку, чтобы открыть index.html
. Поэтому я написал этот script, чтобы добавить к вашему bash_profile
:
function open-results () {
# the browser to open up `index.html' in.
browser='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
# let the user know what directory we're looking in
printf "looking in %s" "$(pwd)"
echo ...
for paths in $(find ./ -name 'debug' -type d); do
for files in $(find "$paths" -name 'index.html'); do
open -a "$browser" "$files"
done
done
echo done
}
Теперь, cd в Results-SOME-DATE
и введите open-results
. Снова, это было написано для bash. Возможно, вам потребуется изменить в зависимости от вашей ОС. Но структура должна быть одинаковой
Надеюсь, это поможет.