У меня та же проблема, что и у вас; Мне нужен определенный порядок, в котором должен выполняться мой тест. Приложение, которое я тестирую, слишком сложное, чтобы запускать его в непредсказуемом порядке. Мое решение было таким:
Добавьте это в свой build.gradle
:
spoon {
if (project.hasProperty('spoonClassName')){
className = project.spoonClassName
}
}
Теперь вы можете выполнить определенный класс с помощью следующей команды:
градуированная ложка -PspoonClassName=‹ com.your.pakage.ClassName>
Далее создайте файл в корне проекта Android: runAllTests.sh
Отредактируйте свой .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.WorkoutSchedule
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"
Затем предоставьте скрипту разрешения
cd
к сценарию
- введите
chmod u+x runAllTest.sh
Все готово. Теперь просто введите cd
в свой корень, затем, чтобы выполнить тест, введите . runAllTest.sh
.
Итак, что это делает:
- Во-первых, он создает временную метку.out. Я использую это, чтобы я мог сохранять свои результаты в файл снова и снова без перезаписи предыдущих результатов. Вам не нужна эта часть.
- Затем он создает папку
result
в корне вашего проекта, если ее там еще нет.
- Затем он создаст папку внутри папки результатов с именем
Results-SOME-DATE
.
- Наконец, каждый тест будет запущен, и результаты будут сохранены в обычном месте вашего проекта. (Внутри сборки/ложки) После завершения теста он скопирует результаты в папку результатов и назовет каждый результат теста соответствующим образом, чтобы было легко увидеть все ваши тесты.
ПРИМЕЧАНИЕ. Этот сценарий был написан для MAC. Если вы используете Windows или что-то еще, этот скрипт может нуждаться в изменениях.
Дополнительно: вам будет неудобно открывать каждую папку, чтобы открыть index.html
. Поэтому я написал этот скрипт, чтобы добавить к вашему 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
. Опять же, это было написано для терминала. Возможно, вам придется изменить в зависимости от вашей ОС. Но структура должна быть одинаковой
Надеюсь, это поможет.
person
Chad Bingham
schedule
05.06.2014