Jak můžu automatizovat testovací projekt Android NUnit?
Poznámka:
Tato příručka vysvětluje, jak automatizovat testovací projekt Android NUnit, nikoli projekt Xamarin.UITest. Informace o Xamarin.UITest najdete tady.
Když vytvoříte projekt aplikace pro testování částí (Android) v sadě Visual Studio (nebo v projektu Android Unit Test v Visual Studio pro Mac), nebude tento projekt automaticky spouštět testy ve výchozím nastavení. Pokud chcete spustit testy NUnit na cílovém zařízení, můžete vytvořit podtřídu Android.App.Instrumentation , která je spuštěna pomocí následujícího příkazu:
adb shell am instrument
Tento proces vysvětluje následující kroky:
Vytvořte nový soubor s názvem 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 ()); } } }
V tomto souboru
Xamarin.Android.NUnitLite.TestSuiteInstrumentation
je (z Xamarin.Android.NUnitLite.dll) podtříděna k vytvořeníTestInstrumentation
.Implementujte
TestInstrumentation
konstruktor a metoduAddTests
. MetodaAddTests
řídí, které testy se skutečně provádějí..csproj
Upravte soubor tak, aby se přidal TestInstrumentation.cs. Příklad:<?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>
Nasaďte aplikaci v režimu ladění nebo vydané verze a pak ji zastavte.
Ke spuštění testů jednotek použijte následující příkaz. Nahraďte
PACKAGE_NAME
názvem balíčku aplikace (název balíčku najdete v atributu aplikace/manifest/@package
umístěném v AndroidManifest.xml):adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentation
Volitelně můžete upravit
.csproj
soubor tak, aby přidalRunTests
cíl nástroje MSBuild. To umožňuje vyvolat testy jednotek pomocí následujícího příkazu:msbuild /t:RunTests Project.csproj
(Všimněte si, že použití tohoto nového cíle není povinné; dřívější
adb
příkaz lze použít místomsbuild
.)
Další informace o použití adb shell am instrument
příkazu ke spuštění testů jednotek naleznete v tématu Android Developer Running tests with ADB topic.
Poznámka:
Ve verzi Xamarin.Android 5.0 budou výchozí názvy balíčků pro obálky volatelné pro Android založené na MD5SUM sestavení kvalifikovaném názvu exportovaného typu. To umožňuje poskytnutí stejného plně kvalifikovaného názvu ze dvou různých sestavení a nezískute chybu balení. Proto se ujistěte, že používáte Name
vlastnost atributu Instrumentation
k vygenerování čitelného názvu ACW/třídy.
Název ACW musí být použit ve adb
výše uvedeném příkazu.
Přejmenování nebo refaktoring třídy jazyka C# bude vyžadovat úpravu RunTests
příkazu tak, aby používal správný název ACW.