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. Příručky k Xamarin.UITest najdete tady.

Když vytvoříte projekt aplikace Unit Test App (Android) v projektu Visual Studio (nebo Android Unit Test v Visual Studio pro Mac), tento projekt ve výchozím nastavení testy automaticky nespouště. Pokud chcete spouštět testy NUnit na cílovém zařízení, můžete vytvořit podtřídu Android.App.Instrumentation, která se spustí pomocí následujícího příkazu:

adb shell am instrument

Tento proces je vysvětlen v následujících krocích:

  1. 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 Xamarin.Android.NUnitLite.TestSuiteInstrumentation) podtřída pro vytvoření TestInstrumentation .

  2. Implementujte TestInstrumentation konstruktor a AddTests metodu . Metoda AddTests řídí, které testy se ve skutečnosti provádějí.

  3. Upravte soubor .csproj a přidejte .csproj Napří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="&quot;$(_AndroidPlatformToolsDirectory)adb&quot; $(AdbTarget) $(AdbOptions) shell am instrument -w $(_AndroidPackage)/app.tests.TestInstrumentation" />
        </Target>
        ...
    </Project>
    
  4. Nasaďte aplikaci v režimu ladění nebo vydání a pak ji zastavte.

  5. Pomocí následujícího příkazu spusťte testy jednotek. Nahraďte názvem balíčku aplikace (název balíčku najdete v atributu aplikace v souboru PACKAGE_NAME/manifest/@packagePACKAGE_NAME):

    adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentation
    
  6. Volitelně můžete soubor upravit a .csproj přidat do MSBuild RunTests cíl. Díky tomu je možné vyvolat testy jednotek pomocí příkazu, jako je tento:

    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 je možné použít místo msbuild .)

Další informace o použití příkazu ke spouštění testů jednotek najdete v tématu Android adb shell am instrument Developer Running tests with adb shell am instrument .)

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 kvalifikovaného názvu sestavení exportovaného typu. To umožňuje, aby byl stejný plně kvalifikovaný název poskytnut ze dvou různých sestavení a nezískal chybu balení. Proto se ujistěte, že k vygenerování čitelného názvu Name ACW/třídy používáte vlastnost Instrumentation atributu .

Název ACW se musí použít v příkazu výše. Přejmenování nebo refaktoring třídy C# proto bude vyžadovat úpravu příkazu tak, aby se používá RunTests správný název ACW.