Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Platformlar arası uygulamalar, kalitelerini, güvenilirliklerini ve performanslarını geliştirmek için gerçek dünyada kullanabilecekleri şekilde test edilmelidir. Bir uygulamada birim testi, tümleştirme testi ve kullanıcı arabirimi testi gibi birçok test türü gerçekleştirilmelidir. Birim testi en yaygın biçimdir ve yüksek kaliteli uygulamalar oluşturmak için gereklidir.
Birim testi, genellikle bir yöntem olan uygulamanın küçük bir birimini alır, kodun geri kalanından yalıtır ve beklendiği gibi davrandığını doğrular. Amacı, her işlev biriminin beklendiği gibi çalıştığını ve bu nedenle hataların uygulama genelinde yayılmadığını denetlemektir. Bir hatanın oluştuğu yeri algılamak, hatanın ikincil bir hata noktasında dolaylı olarak etkisini gözlemlemekten daha verimlidir.
Birim testleri genellikle arrange-act-assert desenini kullanmalıdır:
Adımlar | Açıklama |
---|---|
Düzenle | Nesneleri başlatın ve test altındaki yönteme geçirilen verilerin değerini ayarlayın. |
Hareket | Gerekli bağımsız değişkenlerle test altındaki yöntemini çağırın. |
Assert | Test altındaki yönteminin eyleminin beklendiği gibi davrandığını doğrulayın. |
Bu düzen, birim testlerinin okunabilir, kendi kendine açıklayıcı ve tutarlı olmasını sağlar.
Birim testi, yazılım geliştirme iş akışınızın ayrılmaz bir parçası olduğunda kod kalitesi üzerinde en önemli etkiye sahiptir. Birim testleri, uygulamanız için tasarım belgeleri ve işlevsel belirtimler olarak görev yapabilir. Bir yöntem yazıldığı anda standart, sınır ve yanlış giriş veri durumlarına yanıt olarak yöntemin davranışını doğrulayan ve kod tarafından yapılan açık veya örtük varsayımları denetleyebilen birim testleri yazılmalıdır. Alternatif olarak, test temelli geliştirme ile birim testleri koddan önce yazılır.
Önemli
Birim testleri regresyona karşı çok etkilidir. Başka bir ifadeyle, eskiden çalışan ancak hatalı bir güncelleştirme tarafından rahatsız edilen işlevler.
xUnit , .NET MAUI uygulamaları için önerilen test çerçevesidir.
.NET MAUI çözümüne xUnit testleri ekleme
.NET MAUI çözümünüze xUnit testleri eklemek için:
Çözümünüze yeni bir xUnit Test Projesi eklemek için Visual Studio'yu kullanın.
VEYA
Yeni bir xUnit test projesi oluşturmak ve bunu çözümünüzde eklemek için .NET CLI kullanın. Daha fazla bilgi için bkz . Dotnet test ve xUnit kullanarak .NET'te C# birim testi.
xUnit test projesinin proje dosyası (.csproj), aşağıdaki örneğe benzer olacaktır:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="2.5.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
</ItemGroup>
<ItemGroup>
<Using Include="Xunit" />
</ItemGroup>
</Project>
$(TargetFramework)
derleme özelliği, test projesi için hedef çerçeveyi belirtir. Bu, makinenizde yüklü olan en son .NET sürümü olacaktır.
Paket, xunit
test çerçevesinin kendisini içeren alt paketleri ve birim testleriyle ilgili yaygın sorunları algılayan Roslyn çözümleyicilerini getirir. xunit.runner.visualstudio
ve Microsoft.NET.Test.Sdk
paketleri, birim testlerinizi Visual Studio'da ve komutuyla dotnet test
çalıştırmak için gereklidir. Paketler coverlet.collector
kod kapsamının toplanmasına olanak tanır. Kod kapsamını toplamayı düşünmüyorsanız, bu paket başvuruyu kaldırabilirsiniz. Birim testi için kod kapsamı hakkında daha fazla bilgi için bkz . Birim testi için kod kapsamını kullanma.
Uygulamanızı birim testi için yapılandırmaya yönelik iki ana yaklaşım vardır:
- Birim testini yapacağınız kod bir .NET MAUI sınıf kitaplığı projesindedir.
- Birim testini yapacağınız kod bir .NET MAUI uygulama projesindedir.
Her yaklaşım belirli bir yapılandırma gerektirir.
Birim testi için .NET MAUI sınıf kitaplığı projesi yapılandırma
Bu yaklaşımla, birim testi yapmak istediğiniz kod .NET MAUI uygulama projeniz tarafından kullanılan bir .NET MAUI sınıf kitaplığı projesinde yer alır. .NET MAUI sınıf kitaplığına birim testleri yazmak için proje tarafından kullanılan hedef çerçeveleri güncelleştirmeniz gerekir. Bu, xUnit test projesi dosyasından (.csproj) derleme özelliğinin $(TargetFramework)
değerini .NET MAUI sınıf kitaplığı proje dosyasındaki $(TargetFrameworks)
derleme özelliğine ekleyerek elde edilebilir:
<TargetFrameworks>net8.0;net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
Bu örnekte, .NET MAUI sınıf kitaplığı proje dosyasında derleme özelliğine $(TargetFrameworks)
bir değeri net8.0
eklenmiştir.
Ardından, xUnit test projenizden .NET MAUI sınıf kitaplığı projenize bir başvuru eklemeniz gerekir.
Birim testi için .NET MAUI uygulama projesi yapılandırma
Bu yaklaşımla, birim testi yapmak istediğiniz kod bir .NET MAUI uygulama projesindedir. .NET MAUI uygulama projesine karşı birim testleri yazmak için proje tarafından kullanılan hedef çerçeveleri güncelleştirmeniz gerekir. Bu, xUnit test projesi dosyasından (.csproj) derleme özelliğinin $(TargetFramework)
değerini .NET MAUI uygulama proje dosyasındaki $(TargetFrameworks)
derleme özelliğine ekleyerek elde edilebilir:
<TargetFrameworks>net8.0;net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
Bu örnekte , .NET MAUI uygulama proje dosyasındaki derleme özelliğine $(TargetFrameworks)
bir değeri net8.0
eklenmiştir.
XUnit test projesi tarafından kullanılan hedef çerçeve için yürütülebilir dosya çıkışı vermemesi için .NET MAUI uygulama projenizi değiştirmeniz de gerekir. Bu, .NET MAUI uygulama projesi dosyasındaki $(OutputType)
derleme özelliğine bir koşul eklenerek elde edilebilir:
<OutputType Condition="'$(TargetFramework)' != 'net8.0'">Exe</OutputType>
Bu örnekte. .NET MAUI uygulama projesi yalnızca hedef çerçeve olmadığında net8.0
yürütülebilir dosya oluşturur.
Ardından, xUnit test projenizden .NET MAUI uygulama projenize bir başvuru eklemeniz gerekir.
Birim testleri yazma
xUnit iki farklı birim testi türünü destekler:
Test türü | Öznitelik | Açıklama |
---|---|---|
Gerçekler | Fact |
Sürekli koşulları test eden, her zaman doğru olan testler. |
Teori | Theory |
Yalnızca belirli bir veri kümesi için geçerli olan testler. |
Birim testleri xUnit test projenize yerleştirilmeli ve veya [Theory]
özniteliğiyle [Fact]
donatılmalıdır. Aşağıdaki örnekte özniteliğini kullanan birim testleri gösterilmektedir [Fact]
:
namespace MyUnitTests
{
public class MyTests
{
[Fact]
public void PassingTest()
{
Assert.AreEqual(4, 2+2);
}
[Fact]
public void FailingTest()
{
Assert.AreEqual(5, 2+2);
}
}
}
Bu örnekte, testler kasıtlı olarak geçen ve başarısız olan bir testi temsil ediyor.
Aşağıdaki örnekte özniteliğini kullanan birim testleri gösterilmektedir [Theory]
:
namespace MyUnitTests
{
public class MyTests
{
[Theory]
[InlineData(3)]
[InlineData(4)]
[InlineData(5)]
public void MyTheoryTest(int value)
{
Assert.True(value % 2 == 1);
}
}
}
Bu örnekte, yalnızca bir test yöntemi olsa da, teori her veri öğesi için bir kez çalıştırılacağından aslında üç test vardır.
İpucu
Her birim testiyle bir işlemi test edin. Bir testin karmaşıklığı genişledikçe bu testin doğrulanması daha da zorlaşır. Birim testini tek bir endişeyle sınırlayarak testlerinizin yinelenebilir, yalıtılmış ve daha kısa bir yürütme süresine sahip olduğundan emin olabilirsiniz. Daha fazla bilgi için bkz . Birim testi en iyi yöntemleri.
Birim testlerini çalıştırma
Birim testleri Visual Studio'daki Test Gezgini'nde veya komutuyla dotnet test
değiştirilebilir. Test Gezgini hakkında bilgi için bkz . Test Gezgini ile birim testleri çalıştırma. Komut hakkında dotnet test
bilgi için bkz . Dotnet testi ve xUnit ve dotnet testi kullanarak .NET'te C# birim testi.
Cihaz çalıştırıcılarını kullanarak birim testleri çalıştırma
Birim testleri, cihaz çalıştırıcısı olan bir cihazda da çalıştırılabilir. Cihaz çalıştırıcısı, görsel bir çalıştırıcı kabuğu ve XHarness kullanarak CLI'dan çalıştırılacak bazı kancalar sağlayan bir test çalıştırıcı uygulamasıdır. Daha fazla bilgi için Test cihazı çalıştırıcıları wiki'sinin belgelerine bakın.