Aracılığıyla paylaş


VSTest'ten Microsoft.Testing.Platform'a geçiş

Bu makalede VSTest'ten Microsoft.Testing.Platform'a nasıl geçiş yapılacağını öğreneceksiniz.

Microsoft.Testing.Platform'u kullanmayı kabul etme

Geçişin ilk adımı, Microsoft.Testing.Platform'u kullanmayı kabul etmektir.

Tüm test çerçeveleri için çözümdeki tüm test projelerine ekleyin <OutputType>Exe</OutputType> . Bundan sonra çerçeveye özgü yönergeleri izleyin.

MSTest

Microsoft.Testing.Platform, 3.2.0 ile başlayan MSTest tarafından desteklenir. Ancak, en son kullanılabilir MSTest sürümüne güncelleştirmenizi öneririz.

Kabul etmek için, <EnableMSTestRunner>true</EnableMSTestRunner>'yi PropertyGroup altına Directory.Build.props dosyasında ekleyin.

Uyarı

MSTest.Sdk kullanılırken Microsoft.Testing.Platform, belirtilmediği sürece <UseVSTest>true</UseVSTest> varsayılan olarak kullanılır.

NUnit (Türkçe)

Microsoft.Testing.Platform, 5.0.0 ile başlayan NUnit3TestAdapter tarafından desteklenir.

Kabul etmek için, Directory.Build.props dosyasında bir PropertyGroup altına <EnableNUnitRunner>true</EnableNUnitRunner> ekleyin.

xUnit.net

Microsoft.Testing.Platform, xunit.v3 ile başlayarak desteklenir.

Kabul etmek için, bir PropertyGroup dosyasındaki Directory.Build.props içindeki <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner> ekleyin.

dotnet test

.NET 9 SDK ve önceki sürümler için giriş yap

.NET 9 SDK ve önceki sürümlerde Microsoft.Testing.Platform için yerel destek yoktur. Destek, VSTest altyapısının üzerine kurulmuştur. Bunu kullanmak için Directory.Build.props dosyasındaki bir PropertyGroup altına <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport> ekleyin.

Önemli

Microsoft.Testing.Platform desteğini bu modda çalıştırırken, -- ekleyerek bağımsız değişkenleri yeni platform bağımsız değişkenlerinden ayırmanız dotnet test gerekir. Örneğin, dotnet test --no-build -- --list-tests.

.NET 10 SDK ve üzeri için katılmayı tercih et.

.NET 10 SDK'sı ile başlayarak Microsoft.Testing.Platform için yerel destek sağlanır. Bunu kullanmak için Microsoft.Testing.Platform test çalıştırıcısını global.json'de belirtmeniz gerekir.

{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Önemli

Bu modda, ekstra -- artık kullanılmaz.

Çağrıları güncelle dotnet test

komut satırı seçenekleri dotnet test iki kategoriye ayrılır: derlemeyle ilgili bağımsız değişkenler ve testle ilgili olanlar.

Derlemeyle ilgili parametreler test platformuyla ilgili olmadığı için yeni platform için güncelleştirilmesi gerekmez. Derlemeyle ilgili argümanlar burada listelenmiştir.

  • -a|--arch <ARCHITECTURE>
  • --artifacts-path <ARTIFACTS_DIR>
  • -c|--configuration <CONFIGURATION>
  • -f|--framework <FRAMEWORK>
  • -e|--environment <NAME="VALUE">
  • --interactive
  • --no-build
  • --nologo
  • --no-restore
  • -o|--output <OUTPUT_DIRECTORY>
  • --os <OS>
  • -r|--runtime <RUNTIME_IDENTIFIER>
  • -v|--verbosity <LEVEL>

Testle ilgili bağımsız değişkenler VSTest'e özeldir ve bu nedenle yeni platformla eşleşecek şekilde dönüştürülmesi gerekir. Aşağıdaki tabloda VSTest bağımsız değişkenleri ile yeni platform arasındaki eşleme gösterilmektedir:

VSTest bağımsız değişkeni Yeni platform argümanı
--test-adapter-path <ADAPTER_PATH> Microsoft.Testing.Platform ile ilgili değil
--blame Microsoft.Testing.Platform ile ilgili değil
--blame-crash --crashdump ( Kilitlenme dökümü uzantısı gerektirir)
--blame-crash-dump-type <DUMP_TYPE> --crashdump-type ( Kilitlenme dökümü uzantısı gerektirir)
--blame-crash-collect-always Desteklenmez
--blame-hang --hangdump ( Kilitlenme bilgi dökümü uzantısı gerektirir)
--blame-hang-dump-type <DUMP_TYPE> --hangdump-type ( Kilitlenme bilgi dökümü uzantısı gerektirir)
--blame-hang-timeout <TIMESPAN> --hangdump-timeout (Hang dökümü eklentisi gerektirir)
--collect <DATA_COLLECTOR_NAME> Veri toplayıcıya bağlıdır
-d\|--diag <LOG_FILE> --diagnostic
--filter <EXPRESSION> Seçilen test çerçevesine bağlıdır
-l\|--logger <LOGGER> Günlük kaydı sistemine bağlıdır
--results-directory <RESULTS_DIR> --results-directory <RESULTS_DIR>
-s\|--settings <SETTINGS_FILE> Seçilen test çerçevesine bağlıdır
-t\|--list-tests --list-tests
-- <RunSettings arguments> --test-parameter ( VSTestBridge tarafından sağlanır)

--collect

--collect vsTest'te herhangi bir veri toplayıcı için genel bir genişletilebilirlik noktasıdır. Microsoft.Testing.Platform'un genişletilebilirlik modeli farklıdır ve tüm veri toplayıcıları tarafından kullanılacak böyle bir merkezi bağımsız değişken yoktur. Microsoft.Testing.Platform ile her veri toplayıcı kendi komut satırı seçeneğini ekleyebilir. Örneğin, VSTest aracılığıyla Microsoft CodeCoverage çalıştırmak aşağıdakine benzer olabilir:

dotnet test --collect "Code Coverage;Format=cobertura"

Microsoft.Testing.Platform ile bu durum şu hale gelir:

dotnet test --coverage --coverage-output-format cobertura

Önemli

Daha önce açıklandığı gibi, MICROSOFT.Testing.Platform'u VSTest tabanlı dotnet testile kullanırken, platforma geçirilmesi amaçlanan bağımsız değişkenler öncesinde ek -- gereklidir. Yani, bu olur dotnet test -- --coverage --coverage-output-format cobertura.

--filter

--filter VSTest tabanlı filtredir.

MSTest ve NUnit, Microsoft.Testing.Platform ile çalışırken bile aynı filtre biçimini destekler.

xUnit.net, Microsoft.Testing.Platform ile çalışırken aynı filtre biçimini desteklemez. VSTest tabanlı filtreden, aşağıdaki komut satırı seçenekleri kullanılarak sağlanan xunit.v3'teki yeni filtre desteğine geçmeniz gerekir.

xUnit.net'e özgü seçenekler:

  • --filter-class
  • --filter-not-class
  • --filter-method
  • --filter-not-method
  • --filter-namespace
  • --filter-not-namespace
  • --filter-trait
  • --filter-not-trait
  • --filter-query

Daha fazla bilgi için xUnit.net için Microsoft.Testing.Platform belgelerine ve xUnit.net için Sorgu Filtresi Dili'ne bakın.

--logger

VSTest'te genellikle "günlükçü" olarak adlandırılan şey, Microsoft.Testing.Platform'da "reporter" olarak adlandırılır. Microsoft.Testing.Platform'da günlük kaydı yalnızca tanılama amacıyla açıkça yapılır.

benzeri--collect--logger, vsTest'te herhangi bir günlükçü (veya Microsoft.Testing.Platform bağlamında herhangi bir muhabir) için genel bir genişletilebilirlik noktasıdır. Her Microsoft.Testing.Platform muhabiri kendi komut satırı seçeneğini ekleyebilir ve bu nedenle VSTest'in --loggergibi merkezi bir komut satırı seçeneği yoktur.

En yaygın kullanılan VSTest günlükçülerinden biri TRX günlükçüdür. Bu logger genellikle aşağıdaki şekilde çağrılır:

dotnet test --logger trx

Microsoft.Testing.Platform ile komut şu hale gelir:

dotnet test --report-trx

Önemli

--report-trx kullanmak için Microsoft.Testing.Extensions.TrxReport NuGet paketinin yüklü olması gerekir.

Önemli

Daha önce açıklandığı gibi, MICROSOFT.Testing.Platform'u VSTest tabanlı dotnet testile kullanırken, platforma geçirilmesi amaçlanan bağımsız değişkenler öncesinde ek -- gereklidir. Yani, bu olur dotnet test -- --report-trx.

--settings

VSTest --settings test çalıştırması için bir RunSettings dosyası belirtmek amacıyla kullanılır. RunSettings, temel Microsoft.Testing.Platform tarafından desteklenmez ve yerine daha modern testconfig.json bir yapılandırma dosyası kullanılır. Ancak MSTest ve NUnit, Microsoft.Testing.Platform'u çalıştırırken eski RunSettings'i desteklemeye devam eder ve --settings hala desteklenir.

vstest.console.exe

vstest.console.exe komutunu doğrudan kullanıyorsanız, bunu dotnet test komutuyla değiştirmenizi öneririz.

Test Gezgini

Visual Studio veya Visual Studio Code Test Gezgini'ni kullanırken Microsoft.Testing.Platform desteğini etkinleştirmeniz gerekebilir.

Visual Studio

Visual Studio Test Gezgini, 17.14 sürümünden itibaren Microsoft.Testing.Platform'u destekler. Önceki bir sürümü kullanıyorsanız Visual Studio'nuzu en son sürüme güncelleştirmeniz gerekebilir.

Visual Studio Code

C# DevKit ile Visual Studio Code, Microsoft.Testing.Platform'u destekler.

Azure DevOps

Azure DevOps görevlerini kullanırken, hangi görevi kullandığınıza bağlı olarak işlem hattınızı Microsoft.Testing.Platform kullanacak şekilde güncelleştirmeniz gerekebilir.

VSTest görevi

Azure DevOps'ta VSTest görevini kullanıyorsanız, bunu .NET Core göreviyle değiştirebilirsiniz.

.NET Core CLI ile ilgili görev

  • Özel arguments görev için verildiğinde, dotnet test geçişi için aynı yönergeleri izleyin.

  • Dosya aracılığıyla .NET 10 SDK ve üzeri için yerel Microsoft.Testing.Platform deneyimine katılmadan global.json görevini kullanıyorsanız, görevi arguments işaret ettiği sonuç dizinine ve istenen TRX raporuna doğru şekilde ayarlamanız gerekir. Örneğin:

    - task: DotNetCoreCLI@2
      displayName: Run unit tests
      inputs:
        command: 'test'
        arguments: '-- --report-trx --results-directory $(Agent.TempDirectory)