Merhaba, .NET geliştiricileri! Microsoft Testing Platform (MTP) ve .NET 10 ile test etme oyununuzu bir üst seviyeye taşımaya hazır mısınız? Geleneksel VSTest çalıştırıcısıyla dotnet test kullanıyorsanız, kemerlerinizi bağlayın—MTP testlerinizi daha sorunsuz, daha hızlı ve daha esnek hale getirmek için burada. Bu sohbet rehberinde, MTP yani MicrosoftTestingPlatform'un ne olduğunu, neden VSTest'ten bir adım öte olduğunu ve projeleriniz için sağlam testler oluşturmak amacıyla **.NET 10**'da dotnet test ile nasıl kullanılacağını keşfedeceğiz. Bu kurulumla denemeler yapmak için attığım adımları, temel bir MSTest projesinden bağımsız yürütülebilir bir çoklu proje çözümüne kadar size göstereceğim. MTP, MicrosoftTestingPlatform, .NET 10, dotnet test dünyasına dalalım ve test etmeyi daha kolay ve eğlenceli hale getirelim!
Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?
Apidog tüm taleplerinizi karşılıyor ve Postman'ı çok daha uygun bir fiyata değiştiriyor!
.NET Geliştirmede Test Neden Önemlidir?
İşe koyulmadan önce, test etmenin neden bu kadar önemli olduğundan bahsedelim. İster küçük bir uygulama ister devasa bir kurumsal sistem inşa ediyor olun, testler kodunuzun beklendiği gibi çalıştığından emin olur, hataları erken yakalar ve sizi o geç saatlere kadar süren hata ayıklama oturumlarından kurtarır. MSTest ve MTP ile oluşturacağımız gibi otomatik birim testleri, işlevselliği doğrulamanıza, kod kalitesini artırmanıza ve yeniden düzenlemeyi kolaylaştırmanıza olanak tanır. .NET 10'un performans artışları ve MTP'nin modern test çerçevesi ile hızlı, güvenilir ve CI/CD işlem hatlarına kolayca entegre edilebilir testler yazmaya hazırsınız. Nasıl olduğunu görmeye hazır mısınız? Yolculuğumu takip edelim!
Microsoft Testing Platform (MTP) Nedir?
Microsoft Testing Platform (MTP) veya MicrosoftTestingPlatform, eskimeye yüz tutmuş VSTest çalıştırıcısının yerini almak üzere tanıtılan Microsoft'un yeni nesil test çerçevesidir. Karmaşık adaptörlere ve DLL tabanlı yürütmeye dayanan VSTest'in aksine, MTP .NET'te testleri çalıştırmak için akıcı, yerel bir deneyim sunar. .NET 10'a yerleşik olarak gelir, bu da onu daha hızlı ve daha esnek hale getirir; bağımsız yürütülebilir test çalıştırıcıları ve dotnet test ile daha iyi entegrasyon gibi özelliklere sahiptir. MTP; MSTest, NUnit ve xUnit'i destekler ve CI/CD ile çapraz platform geliştirme dahil modern iş akışları için tasarlanmıştır. Onu, .NET 10'un performans geliştirmeleri için optimize edilmiş, VSTest'in daha havalı, daha verimli bir kardeşi olarak düşünebilirsiniz.
Adım 1: MTP ile Temel Bir MSTest Projesi Kurulumu
MTP'yi çalışırken görmek için temel bir MSTest projesi oluşturarak basitçe başlayalım. İşte nasıl başladığım:
Projeyi Oluşturun:
- Terminalinizi açın ve .NET CLI kullanarak yeni bir MSTest projesi oluşturun:
dotnet new mstest -n MyMtpTests
- Bu, varsayılan bir test dosyası (
UnitTest1.cs) ve bir.csprojdosyası içerenMyMtpTestsadında bir proje klasörü oluşturur.
Proje Dosyasını Kontrol Edin:
- Oluşturulan
MyMtpTests.csprojşöyle görünü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="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
</Project>
- Bu, kod kapsamı için Coverlet'ı ve test yürütme için Microsoft.NET.Test.Sdk'yi kullanarak VSTest ile standart bir MSTest projesi kurar.
Testleri Çalıştırın:
- Proje klasörüne gidin:
cd MyMtpTests
- Varsayılan testi çalıştırın:
dotnet test
- VSTest çalıştırıcısı
UnitTest1.csiçindeki örnek testi yürütür ve testin geçtiğini onaylayan çıktıyı, Coverlet'ten alınan kapsam istatistikleriyle birlikte görürsünüz.

Neler Oluyor? Bu, VSTest kullanan geleneksel bir kurulumdur, ancak MTP'ye yükseltmeden önce sağlam bir temeldir. Proje testleri bir DLL olarak çalıştırır, bu iyi olsa da MTP'nin yürütülebilir yaklaşımı kadar esnek değildir.
Adım 2: MTP Yürütülebilir Tabanlı Test Çalıştırıcısına Geçiş
Şimdi, dotnet test olmadan testleri çalıştırmanıza olanak tanıyan MTP'nin bağımsız yürütülebilir çalıştırıcısına geçerek işleri daha heyecanlı hale getirelim. İşte nasıl yaptığım:
Proje Dosyasını Güncelleyin:
- MTP'yi etkinleştirmek ve bir yürütülebilir dosya oluşturmak için
MyMtpTests.csprojdosyasını değiştirin:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<!-- Enable MTP runner and executable output -->
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
<PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
</Project>
Temel değişiklikler:
<EnableMSTestRunner>true</EnableMSTestRunner>: MTP'nin test çalıştırıcısını etkinleştirir.<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>:dotnet testile uyumluluğu sağlar.<OutputType>Exe</OutputType>: Bir DLL yerine bağımsız bir yürütülebilir dosya çıktısı verir.
Projeyi Oluşturun:
- Çalıştırın:
dotnet build
- Bu, `bin/Debug/net8.0` klasöründe bir yürütülebilir dosya (örn. `MyMtpTests.exe`) oluşturur.

Yürütülebilir Dosyayı Çalıştırın:
- Çıktı dizinine gidin:
cd bin/Debug/net8.0
- Yürütülebilir dosyayı çalıştırın:
- Windows:
MyMtpTests.exe - macOS/Linux:
./MyMtpTests - Testler bağımsız bir konsol uygulaması olarak çalışır,
dotnet test'e gerek kalmaz!

Neden Harika: Yürütülebilir yaklaşım, özel CI/CD kurulumları veya .NET SDK kurulu olmayan ortamlar için mükemmeldir. Esneklik açısından ezber bozan bir yeniliktir ve MTP ek yükü azaltarak VSTest'ten daha hızlı olmasını sağlar.
Adım 3: .NET 10 ve Çoklu Proje Testleri ile Profesyonelleşmek
MTP ve .NET 10'un gerçek dünya senaryosunda parladığını görmek için, bir sınıf kütüphanesi ve testler içeren çoklu proje çözümü oluşturalım. İşte nasıl kurduğum:
Nihai Proje Yapısı:
MyMtpSolution/
│
├── MyLibrary/
│ ├── Calculator.cs
│ └── MyLibrary.csproj
│
├── MyLibrary.Tests/
│ ├── CalculatorTests.cs
│ └── MyLibrary.Tests.csproj
│
├── MyMtpSolution.sln
└── dotnet.config
1. Çözüm Oluşturun:
- Bir çözümle sıfırdan başlayın:
dotnet new sln -n MyMtpSolution
2. Sınıf Kütüphanesi Oluşturun:
- Bir sınıf kütüphanesi projesi ekleyin:
dotnet new classlib -n MyLibrary
- `MyLibrary/Calculator.cs` içinde bir
Calculatorsınıfı uygulayın:
namespace MyLibrary
{
public class Calculator
{
public int Add(int a, int b) => a + b;
public int Subtract(int a, int b) => a - b;
public int Multiply(int a, int b) => a * b;
public int Divide(int a, int b) =>
b == 0 ? throw new ArgumentException("Cannot divide by zero.") : a / b;
}
}
3. Test Projesi Oluşturun:
- Bir MSTest projesi oluşturun:
dotnet new mstest -n MyLibrary.Tests
- `MyLibrary.Tests/UnitTest1.cs` içine testler ekleyin:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyLibrary;
namespace MyLibrary.Tests
{
[TestClass]
public class CalculatorTests
{
private Calculator _calculator;
[TestInitialize]
public void Setup()
{
_calculator = new Calculator();
}
[TestMethod]
public void Add_ReturnsCorrectSum()
{
Assert.AreEqual(5, _calculator.Add(2, 3));
}
[TestMethod]
public void Subtract_ReturnsCorrectDifference()
{
Assert.AreEqual(1, _calculator.Subtract(3, 2));
}
[TestMethod]
public void Multiply_ReturnsCorrectProduct()
{
Assert.AreEqual(6, _calculator.Multiply(2, 3));
}
[TestMethod]
public void Divide_ReturnsCorrectQuotient()
{
Assert.AreEqual(2, _calculator.Divide(6, 3));
}
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void Divide_ByZero_ThrowsException()
{
_calculator.Divide(6, 0);
}
}
}
4. Proje Referansları Ekleyin:
- Test projesini kütüphaneye bağlayın:
dotnet add MyLibrary.Tests reference MyLibrary
5. Çözüme Projeler Ekleyin:
- Her iki projeyi de çözüme dahil edin:
dotnet sln MyMtpSolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MyMtpSolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj
6. MTP için Yapılandırın:
- MTP'yi etkinleştirmek için `MyLibrary.Tests.csproj` dosyasını güncelleyin:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
<PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
</Project>
- İsteğe bağlı olarak, tutarlılık için `MyLibrary.csproj` dosyasını güncelleyin (kesinlikle gerekli olmasa da):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
7. .NET 10'a Yükseltin:
- Microsoft.com adresinden .NET 10 SDK'sını indirin (işletim sisteminizle uyumlu olduğundan emin olun—Windows, macOS veya Linux).

- Her iki `.csproj` dosyasını da **.NET 10**'u hedefleyecek şekilde güncelleyin:
<TargetFramework>net10.0</TargetFramework>
8. Bir dotnet.config Dosyası Oluşturun:
- Çözüm kökünde, `dotnet.config` dosyasını şununla oluşturun:
[dotnet.test.runner]
name = "Microsoft.Testing.Platform"
- Bu, MTP'nin **.NET 10**'da
dotnet testile yerel entegrasyonunu sağlar.
9. Testleri Oluşturun ve Çalıştırın:
- Çözüm kökünden:
dotnet test
- MTP, **.NET 10**'un optimizasyonlarından yararlanarak testleri çalıştırır. Geçme/kalma ve kapsam istatistikleri dahil tüm testlerin çıktısını göreceksiniz.

Neden Harika: **.NET 10** performans iyileştirmeleri (daha hızlı JIT, daha iyi bellek yönetimi) getirirken, MTP'nin yerel entegrasyonu VSTest'in eski köprülerini ortadan kaldırarak testleri daha hızlı ve daha güvenilir hale getirir. Çoklu proje kurulumu, bir kütüphane ve ayrı bir test projesi ile gerçek dünya uygulamalarını taklit eder.
.NET 10 ve MTP Testleri Nasıl Geliştirir?
MTP ve **.NET 10** testleri bir sonraki seviyeye taşıyor:
- Hız: MTP'nin yerel çalıştırıcısı **.NET 10** için optimize edilmiştir, VSTest'e kıyasla başlangıç süresini azaltır.
- Esneklik: Bağımsız yürütülebilir dosyalar testleri taşınabilir hale getirir, özel CI/CD veya kapsayıcılı ortamlar için idealdir.
- Ölçeklenebilirlik: Çoklu proje desteği karmaşık çözümleri yönetir, MTP tutarlı test yürütmeyi sağlar.
- Modern Özellikler: **.NET 10**'un AOT derlemesi ve bellek optimizasyonları testlerin daha hızlı çalışmasını sağlarken, MTP paralel test yürütme ve özel raporlayıcılar gibi gelişmiş özellikleri destekler.
Kullanıcılar MTP hakkında konuşuyor: “VSTest gibi ama yükü yok—daha hızlı ve daha temiz!” **.NET 10** ile en son teknoloji performansını elde edersiniz ve MTP, dotnet test'i keyifli hale getirir.
Sorun Giderme İpuçları
- Testler Çalışmıyor mu? **.NET 10 SDK**'sının kurulu olduğundan ve
TargetFramework'ınnet10.0olarak ayarlandığından emin olun. - MTP Etkin Değil mi?
EnableMSTestRunnerveTestingPlatformDotnetTestSupport'un `.csproj` veya `dotnet.config` içinde olduğundan emin olun. - Kapsam Eksik mi? `coverlet.collector`'ın dahil edildiğini doğrulayın ve `dotnet test --collect:"XPlat Code Coverage"` komutunu çalıştırın.
- Yürütülebilir Dosya Başarısız mı Oluyor? `OutputType`'ın `Exe` olduğundan ve `.exe` dosyasını çalıştırmadan önce `dotnet build` komutunu çalıştırdığınızdan emin olun.
Sonuç
Artık modern bir test kurulumu oluşturmak için MTP (MicrosoftTestingPlatform), .NET 10, dotnet test kullanma konusunda bir uzmansınız! Temel bir MSTest projesinden bağımsız yürütülebilir bir çoklu proje çözümüne kadar, MTP'nin VSTest'i nasıl geride bıraktığını ve **.NET 10**'un performansı nasıl artırdığını gördünüz. Daha fazla test eklemeyi, CI/CD işlem hattınıza entegre etmeyi veya MTP'nin paralel yürütme gibi gelişmiş özelliklerini keşfetmeyi deneyin. Harika test kurulumlarınız mı var? Onları paylaşın—test ruhunu canlı tutalım!
