Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
W tym przewodniku wyjaśniono, jak zautomatyzować projekt testowy NUnit systemu Android, a nie projekt Xamarin.UITest. Informacje o narzędziu Xamarin.UITest można znaleźć tutaj.
Podczas tworzenia projektu Aplikacji testowej jednostkowej (Android) w programie Visual Studio (lub projekcie testów jednostkowych systemu Android w Visual Studio dla komputerów Mac) ten projekt nie będzie automatycznie uruchamiał testów domyślnie. Aby uruchomić testy NUnit na urządzeniu docelowym, możesz utworzyć podklasę Android.App.Instrumentation uruchomioną przy użyciu następującego polecenia:
adb shell am instrument
W poniższych krokach wyjaśniono ten proces:
Utwórz nowy plik o nazwie 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 ()); } } }W tym pliku (z Xamarin.Android.NUnitLite.dll) jest podklasą w celu utworzenia elementu
TestInstrumentation.Xamarin.Android.NUnitLite.TestSuiteInstrumentationZaimplementuj
TestInstrumentationkonstruktor i metodęAddTests. MetodaAddTestskontroluje, które testy są rzeczywiście wykonywane.Zmodyfikuj plik,
.csprojaby dodać TestInstrumentation.cs. Na przykład:<?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>Wdróż aplikację w trybie debugowania lub wydania, a następnie zatrzymaj ją.
Użyj następującego polecenia, aby uruchomić testy jednostkowe. Zastąp
PACKAGE_NAMEciąg nazwą pakietu aplikacji (nazwę pakietu można znaleźć w atrybucie aplikacji/manifest/@packageznajdującym się w AndroidManifest.xml):adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentationOpcjonalnie możesz zmodyfikować plik,
.csprojaby dodać obiekt docelowyRunTestsMSBuild. Dzięki temu można wywołać testy jednostkowe za pomocą polecenia podobnego do następującego:msbuild /t:RunTests Project.csproj(Pamiętaj, że użycie tego nowego obiektu docelowego nie jest wymagane; można użyć wcześniejszego
adbmsbuildpolecenia zamiast .)
Aby uzyskać więcej informacji na temat uruchamiania testów jednostkowych za adb shell am instrument pomocą polecenia , zobacz temat Android Developer Running tests with ADB (Uruchamianie testów dla deweloperów systemu Android w usłudze ADB ).
Uwaga
W wersji Xamarin.Android 5.0 domyślne nazwy pakietów dla opakowań callable systemu Android będą oparte na MD5SUM nazwy kwalifikowanej przez zestaw typu eksportowanego. Dzięki temu ta sama w pełni kwalifikowana nazwa może być dostarczana z dwóch różnych zestawów i nie występuje błąd pakowania. Dlatego upewnij się, że używasz Name właściwości atrybutu Instrumentation w celu wygenerowania czytelnej nazwy ACW/klasy.
Nazwa ACW musi być używana w poleceniu adb powyżej.
Zmiana nazwy/refaktoryzacji klasy C# będzie wymagać modyfikacji RunTests polecenia w celu użycia poprawnej nazwy ACW.