Aracılığıyla paylaş


Android NUnit Test projesini nasıl otomatikleştirebilirim?

Not

Bu kılavuzda, Xamarin.UITest projesi değil Android NUnit test projesinin nasıl otomatikleştirildiği açıklanmaktadır. Xamarin.UITest bilgilerine buradan ulaşabilirsiniz.

Visual Studio'da bir Birim Testi Uygulaması (Android) projesi (veya Mac için Visual Studio'de Android Birim Testi projesi) oluşturduğunuzda, bu proje testlerinizi varsayılan olarak otomatik olarak çalıştırmaz. NUnit testlerini hedef cihazda çalıştırmak için, aşağıdaki komutu kullanarak başlatılan bir Android.App.Instrumentation alt sınıfı oluşturabilirsiniz:

adb shell am instrument

Aşağıdaki adımlar bu işlemi açıklar:

  1. TestInstrumentation.cs adlı yeni bir dosya oluşturun:

    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 ());
            }
        }
    }
    

    Bu dosyada , Xamarin.Android.NUnitLite.TestSuiteInstrumentation ( Xamarin.Android.NUnitLite.dll) oluşturmak TestInstrumentationiçin alt sınıfa alınır.

  2. Oluşturucuyu TestInstrumentation ve AddTests yöntemini uygulayın. AddTests yöntemi, gerçekte hangi testlerin yürütülür denetler.

  3. .csproj TestInstrumentation.cs eklemek için dosyayı değiştirin. Örneğin:

    <?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. Uygulamanızı hata ayıklama veya yayın modunda dağıtın, ardından durdurun.

  5. Birim testlerini çalıştırmak için aşağıdaki komutu kullanın. değerini uygulamanın paket adıyla değiştirin PACKAGE_NAME (paket adı AndroidManifest.xml bulunan uygulamanın /manifest/@package özniteliğinde bulunabilir):

    adb shell am instrument -w PACKAGE_NAME/app.tests.TestInstrumentation
    
  6. İsteğe bağlı olarak, MSBuild hedefini eklemek RunTests için dosyayı değiştirebilirsiniz.csproj. Bu, birim testlerini aşağıdaki gibi bir komutla çağırmayı mümkün kılar:

    msbuild /t:RunTests Project.csproj
    

    (Bu yeni hedefi kullanmanın gerekli olmadığını unutmayın; önceki adb komut yerine kullanılabilir msbuild.)

Birim testlerini çalıştırmak için komutunu kullanma adb shell am instrument hakkında daha fazla bilgi için Android Developer Running tests with ADB konusuna bakın.

Not

Xamarin.Android 5.0 sürümüyle, Android Çağrılabilen Sarmalayıcılar için varsayılan paket adları, dışarı aktarılmakta olan türün derleme nitelikli adının MD5SUM değerini temel alır. Bu, aynı tam adın iki farklı derlemeden sağlanmasına izin verir ve paketleme hatası almaz. Bu nedenle, okunabilir bir ACW/sınıf adı oluşturmak için özniteliğinde Instrumentation özelliğini kullandığınızdan Name emin olun.

ACW adı yukarıdaki komutta adb kullanılmalıdır. Bu nedenle C# sınıfını yeniden adlandırmak/yeniden düzenlemek için komutun RunTests doğru ACW adını kullanacak şekilde değiştirilmesi gerekir.