Sdílet prostřednictvím


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:

  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 (z Xamarin.Android.NUnitLite.dll) podtříděna k vytvoření TestInstrumentation.

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

  3. .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="&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 vydané verze a pak ji zastavte.

  5. 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
    
  6. Volitelně můžete upravit .csproj soubor tak, aby přidal RunTests 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ísto msbuild.)

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.