Запускать тесты NUnit в Appcenter? - PullRequest
2 голосов
/ 20 октября 2019

У меня есть проект Xamarin, который я регулярно отправляю в Appcenter, где он собирается. Это работает нормально, но теперь я добавил тесты NUnit 3 в свое решение, и, хотя они выполняются локально, они, похоже, не выполняются во время сборки Appcenter.

Как настроить решение так, чтобы выполнялся мой тестовый проектна Appcenter? Похоже, нужно объединить его с Xamarin.UITest , но я не совсем понимаю, какие шаги для этого необходимы. Обратите внимание, что мои тесты NUnit - это не тесты пользовательского интерфейса, а обычные модульные тесты.

Обновление: цитата из https://devblogs.microsoft.com/appcenter/faster-android-tests-and-nunit-3/

Теперь вы можете обновить пакет NUnit вместе с UITest допоследние версии и запуск тестов как локально, так и в App Center,

Так что я ожидаю, что тесты NUnit будут выполняться во время сборки App Center без дополнительного скрипта. Может кто-нибудь пролить свет на это? Добавление щедрости сейчас.

Ответы [ 2 ]

4 голосов
/ 21 октября 2019

Самый простой способ, которым я нашел AppCenter для запуска тестов NUnit проекта, - это добавление сценария после сборки для каждого приложения и установка NunitXml.TestLogger пакета Nuget в ваш проект NUnit, который выведет Xml-файл результатов ваших тестов.

Для создания сценария после сборки он должен находиться в корневом каталоге Android / iOS .csproj и иметь имя appcenter-post-build.sh. Тогда ваш скрипт должен выглядеть примерно так:

#Android post build script
#Make sure the directly to the NUnit csproj is correct
ProjectPath="$APPCENTER_SOURCE_DIRECTORY\YourProject.NUnit\YourProject.NUnit.csproj"
echo "$ProjectPath"
#To generate the xml file it requires nuget NunitXml.TestLogger
dotnet test "$APPCENTER_SOURCE_DIRECTORY" --logger:"nunit;LogFilePath=TestResults.xml"
echo "NUnit tests result:"
pathOfTestResults=$(find $APPCENTER_SOURCE_DIRECTORY -name 'TestResults.xml')
cat $pathOfTestResults
echo

#Looks for a failing test and causes the build to fail if found
grep -q 'result="Failed"' $pathOfTestResults

if [[ $? -eq 0 ]]
then 
echo "A test Failed" 
exit 1
else 
echo "All tests passed" 
fi

Последняя часть должна привести к сбою сборки вашего AppCenter, если тест пройдёт. Кроме того, вам может потребоваться дважды выполнить его сборку в AppCenter, прежде чем он обнаружит, что сценарий пост-сборки был добавлен в ваш репозиторий.

0 голосов
/ 07 ноября 2019

Мое понимание блога состоит в том, что UITest использовался на основе nunit 2.x. Итак, ранее, если вы случайно обновились до nunit3.x, ваши UITests не будут работать.

Теперь они обновили его, чтобы вы могли использовать nunit 3.x для запуска ваших тестов пользовательского интерфейса.

Я считаю, @Nick Peppers дает правильный подход. Пример скрипта пост сборки здесь: https://github.com/microsoft/appcenter/blob/master/sample-build-scripts/xamarin/nunit-test/appcenter-post-build.sh

...