Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Questa guida illustra come automatizzare un progetto di test Android NUnit, non un progetto Xamarin.UITest. Informazioni su Xamarin.UITest sono disponibili qui.
Quando si crea un progetto di app unit test (Android) in Visual Studio (o in un progetto unit test Android in Visual Studio per Mac), questo progetto non eseguirà automaticamente i test per impostazione predefinita. Per eseguire test NUnit in un dispositivo di destinazione, è possibile creare una sottoclasse Android.App.Instrumentation avviata usando il comando seguente:
adb shell am instrument
I passaggi seguenti illustrano questo processo:
Creare un nuovo file denominato 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 ()); } } }In questo file (
Xamarin.Android.NUnitLite.TestSuiteInstrumentationda Xamarin.Android.NUnitLite.dll) è sottoclassata per creareTestInstrumentation.Implementare il
TestInstrumentationcostruttore e ilAddTestsmetodo . IlAddTestsmetodo controlla quali test vengono effettivamente eseguiti.Modificare il
.csprojfile per aggiungere TestInstrumentation.cs. Ad esempio:<?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>Distribuire l'applicazione in modalità di debug o rilascio, quindi arrestarla.
Usare il comando seguente per eseguire gli unit test. Sostituire
PACKAGE_NAMEcon il nome del pacchetto dell'app (il nome del pacchetto è disponibile nell'attributo dell'app/manifest/@packageche si trova in AndroidManifest.xml):adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentationFacoltativamente, è possibile modificare il
.csprojfile per aggiungere laRunTestsdestinazione MSBuild. In questo modo è possibile richiamare gli unit test con un comando simile al seguente:msbuild /t:RunTests Project.csprojSi noti che l'uso di questa nuova destinazione non è obbligatorio. Il comando precedente
adbpuò essere usato invece dimsbuild.
Per altre informazioni sull'uso del comando per eseguire unit test, vedere l'argomento Android Developer Running tests with ADB .For more information about using the adb shell am instrument command to run unit test, see the Android Developer Running tests with ADB topic.
Nota
Con la versione Xamarin.Android 5.0 , i nomi predefiniti dei pacchetti per Android Callable Wrapper si baseranno sul md5SUM del nome completo dell'assembly del tipo esportato. In questo modo è possibile specificare lo stesso nome completo da due assembly diversi e non ottenere un errore di creazione del pacchetto. Assicurarsi quindi di usare la proprietà sull'attributo NameInstrumentation per generare un nome DI AW/classe leggibile.
Il nome acw deve essere usato nel adb comando precedente.
La ridenominazione/refactoring della classe C# richiederà pertanto di modificare il RunTests comando per usare il nome ACW corretto.