Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Примечание.
В этом руководстве объясняется, как автоматизировать тестовый проект 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.