Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Примечание.
В этом руководстве объясняется, как автоматизировать тестовый проект NUnit на Android, а не проект Xamarin.UITest. Сведения о Xamarin.UITest см . здесь.
При создании проекта Приложение модульного тестирования (Android) в Visual Studio (или проект Модульный тест Android в Visual Studio для Mac), этот проект не будет автоматически выполнять тестовые проекты по умолчанию. Для выполнения тестовых проектов NUnit на целевом устройстве можно создать подкласс Android.App.Instrumentation, запущенный с помощью следующей команды:
adb shell am instrument
Приведенные ниже шаги показывают, как это сделать.
Создайте новый файл с именем TestInstrumentation.cs:
using System; using System.Reflection; using Android.App; using Android.Content; using Android.Runtime; using Xamarin.Android.NUnitLite; namespace App.Tests { [Instrumentation(Name="app.tests.TestInstrumentation")] public class TestInstrumentation : TestSuiteInstrumentation { public TestInstrumentation (IntPtr handle, JniHandleOwnership transfer) : base (handle, transfer) { } protected override void AddTests () { AddTest (Assembly.GetExecutingAssembly ()); } } }В этом файле
Xamarin.Android.NUnitLite.TestSuiteInstrumentation(из Xamarin.Android.NUnitLite.dll) содержит подклассы для созданияTestInstrumentation.Реализуйте конструктор
TestInstrumentationи методAddTests. МетодAddTestsопределяет, какие тестовые проекты выполняются.Измените файл
.csproj, добавив TestInstrumentation.cs. Например:<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> ... <ItemGroup> <Compile Include="TestInstrumentation.cs" /> </ItemGroup> <Target Name="RunTests" DependsOnTargets="_ValidateAndroidPackageProperties"> <Exec Command=""$(_AndroidPlatformToolsDirectory)adb" $(AdbTarget) $(AdbOptions) shell am instrument -w $(_AndroidPackage)/app.tests.TestInstrumentation" /> </Target> ... </Project>Разверните приложение в режиме отладки или выпуска, а затем выйдите из этого режима.
Используйте следующую команду для запуска модульных тестов. Замените
PACKAGE_NAMEименем пакета приложения (имя пакета можно найти в атрибуте приложения/manifest/@package, расположенном в папке AndroidManifest.xml):adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentationПри необходимости файл
.csprojможно изменить, добавив целевой объект MSBuildRunTests. Это дает возможность вызывать модульные тесты с помощью команды, как в приведенном ниже примере.msbuild /t:RunTests Project.csproj(Обратите внимание, что использование этого нового целевого объекта не является обязательным; вместо
msbuildможно использовать предыдущую командуadb.)
Дополнительные сведения об использовании команды adb shell am instrument для выполнения модульных тестов см. в статье о Android Developer Запуск тестов с помощью ADB.
Примечание.
При использовании Xamarin.Android выпуска 5.0 имена пакетов по умолчанию для вызываемых программ-оболочек Android будут основываться на MD5SUM имени экспортируемого типа с указанием сборки. Это позволяет предоставить одно и то же полное имя из двух разных сборок и не получить ошибку упаковки Поэтому убедитесь, что вы используете свойство Name атрибута Instrumentation, чтобы создать имя класса для чтения или ACW.
Имя ACW должно использоваться в команде adb, приведенной выше.
Для переименования или рефакторинга класса C# потребуется изменить команду RunTests, чтобы она использовала правильное имя ACW.