Projekty testů MTP jsou vytvořené jako spustitelné soubory, které je možné spouštět (nebo ladit) přímo. Neexistuje žádná další konzole ani příkaz pro spuštění testu. Aplikace se ukončí nenulovým ukončovacím kódem, pokud dojde k chybě, která je typická pro většinu spustitelných souborů. Další informace o známých ukončovacích kódech najdete v tématu Ukončovací kódy MTP.
Publikování testovacího project pomocí dotnet publish a spuštění aplikace přímo je dalším způsobem, jak spustit testy. Například spuštění příkazu ./Contoso.MyTests.exe. V některých scénářích je také možné použít dotnet build k vytvoření spustitelného souboru, ale existují hraniční případy ke zvážení, jako je Native AOT.
Použijte dotnet run
Příkaz dotnet run lze použít k sestavení a spuštění testovacího project. To je nejjednodušší, i když někdy nejpomalejší způsob, jak spustit testy. Použití dotnet run je praktické při úpravách a spouštění testů místně, protože zajišťuje, aby se testovací project v případě potřeby znovu sestavil.
dotnet run automaticky vyhledá projekt také v aktuální složce.
dotnet run --project Contoso.MyTests
Další informace o dotnet runnaleznete v tématu dotnet run.
Použijte dotnet exec
Příkaz dotnet exec nebo dotnet slouží ke spuštění (nebo spuštění) již vytvořeného testovacího project, je to alternativa k přímému spuštění aplikace.
dotnet exec vyžaduje cestu k sestavené knihovně DLL testovacího projektu.
dotnet exec Contoso.MyTests.dll
nebo
dotnet Contoso.MyTests.dll
Poznámka:
Poskytnutí cesty ke spustitelnému souboru testovacího projektu (*.exe) dojde k chybě:
Error:
An assembly specified in the application dependencies manifest
(Contoso.MyTests.deps.json) has already been found but with a different
file extension:
package: 'Contoso.MyTests', version: '1.0.0'
path: 'Contoso.MyTests.dll'
previously found assembly: 'S:\t\Contoso.MyTests\bin\Debug\net10.0\Contoso.MyTests.exe'
Další informace o dotnet execviz dotnet exec.
Použijte dotnet test
Od sady .NET 10 SDK má dotnet test vyhrazený režim MTP. Vyberte MTP prostřednictvím global.json, nebo použijte proměnnou prostředí DOTNET_TEST_RUNNER v .NET 11 nebo novější verzi. Vyhrazený režim podporuje projekty, řešení, sestavené testovací moduly a další vstupní typy v novějších verzích sady SDK.
dotnet test --test-modules Contoso.MyTests.dll
Výběr spouštěče a migraci z režimu kompatibility s VSTest viz Testování s dotnet test.
Testy MTP je možné spouštět (a ladit) v Visual Studio, integrovat se s Průzkumníkem testů a lze je také spustit přímo jako spouštěný projekt.
Spuštění aplikace pomocí Visual Studio
Testovací projekt MTP je sestavený jako spustitelné soubory a dá se spustit přímo. Tím se spustí všechny testy v daném spustitelném souboru, pokud není zadaný filtr.
- Přejděte na testovací projekt, který chcete spustit v Průzkumník řešení, vyberte ho pravým tlačítkem a vyberte Set as Startup Project.
- Vyberte Debug>Start bez ladění (nebo použijte Ctrl+F5) pro spuštění vybraného testovacího project.
Otevře se okno konzoly se spuštěním testu a jeho souhrnem.
Ladění aplikace přímo v Visual Studio
Testovací projekt MTP je možné ladit přímo. Chcete-li ladit všechny testy v daném spustitelném souboru, pokud není zadán žádný filtr:
- Přejděte na testovací projekt, který chcete spustit v Průzkumník řešení, vyberte ho pravým tlačítkem a vyberte Set as Startup Project.
- Nastavte bod přerušení v testu, který chcete ladit.
- Přejděte na Debug>Spustit ladění (nebo stiskněte F5) pro ladění vybraného testovacího projektu.
Všechny testy se spustí, dokud se nedosáhne testu se zarážkou. Projděte test, abyste ho mohli odladit. Jakmile dokončíte ladění aplikace, obnoví se spuštění všech zbývajících testů, pokud ji nezastavíte.
Použití Průzkumníka testů
Pokud chcete spustit test, přejděte do Průzkumníka testů, vyberte test (nebo testy), který chcete spustit. Vyberte ho pravým tlačítkem a zvolte Spustit. Podobně jako při ladění testu vyberte test (nebo testy) v Průzkumníku testůa zvolte Ladění.
Poznámka:
Automatická aktualizace testů bez sestavení projektu není dostupná.
Rozšíření C# společně s C# Dev Kit umožňuje ladit a spouštět testy v kódu Visual Studio a také přidává integraci s Průzkumníkem testů Visual Studio Code.
Spuštění aplikace pomocí Visual Studio Code
Testovací projekt MTP je sestavený jako spustitelné soubory a dá se spustit přímo. Tím se spustí všechny testy v daném spustitelném souboru, pokud není zadaný filtr.
- Přejděte k testovacímu souboru, pro který chcete spustit testy.
- Pomocí Ctrl+F5 spusťte vybraný testovací project. Pokud máte více projektů, automaticky otevírané okno vás vyzve, abyste ho vybrali, který chcete spustit.
Otevře se okno konzoly se spuštěním testu a jeho souhrnem.
Ladění aplikace přímo v Visual Studio Kódu
Testovací projekt MTP je sestavený jako spustitelné soubory a dá se spustit přímo. Tím se spustí všechny testy v daném spustitelném souboru, pokud není zadaný filtr.
- Přejděte k testovacímu souboru, pro který chcete spustit testy.
- K ladění vybraného testovacího projektu použijte F5. Pokud máte více projektů, automaticky otevírané okno vás vyzve, abyste ho vybrali, který chcete spustit.
Návod
Existuje několik dalších způsobů spuštění dotnet project pomocí sady C# DevKit, například spuštění z solution explorer nebo vytvoření odpovídajících konfigurací spuštění. Ty jsou uvedené v dokumentaci ke kódu Visual Studio.
Když spustíte projekt, objeví se karta výstupu s výsledkem a souhrnem vašeho testovacího spuštění.
Použití Průzkumníka testů
Pokud chcete spustit test, přejděte do Průzkumníka testů, vyberte test (nebo testy), který chcete spustit. Vyberte ho pravým tlačítkem a zvolte Spustit. Podobně jako při ladění testu vyberte test (nebo testy) v Průzkumníku testůa zvolte Ladění.
Poznámka:
Automatická aktualizace testů bez sestavení projektu není dostupná.
Pokud chcete paralelně spustit více testovacích projektů, spusťte dotnet test jednou pro celé řešení, místo abyste přidávali krok kanálu pro každý spustitelný testovací soubor. Když do řešení přidáte testovací projekt MTP, zahrne ho stejný příkaz bez změny pipeline.
Spusťte řešení v Azure Pipelines
Použijte sadu .NET 10 SDK nebo novější a MTP 1.7 nebo novější. Všechny projekty testů v řešení musí podporovat MTP; Projekty testů pouze VSTest nejsou v tomto režimu podporovány. Pro starší verze sady SDK viz Spouštění projektů MTP s režimem VSTest.
V kořenovém adresáři úložiště vytvořte soubor global.json s následujícím obsahem. Pokud soubor již existuje, přidejte oddíl test a ujistěte se, že je v jeho nastavení sady SDK vybrán .NET 10 nebo novější.
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}
Pro sestavy TRX musí každý testovací projekt odkazovat na Microsoft.Testing.Extensions.TrxReport, buď přímo, nebo prostřednictvím konfigurace testovací sady SDK nebo profilu, který ji obsahuje. Podrobnosti najdete v Visual Studio sestavách testů (TRX).
Do úložiště přidejte následující azure-pipelines.yml soubor. Příklad předpokládá, že Contoso.sln a global.json jsou v kořenovém adresáři úložiště. Nahraďte Contoso.sln cestou relativní k úložišti vašeho řešení.
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 10.0.x
- task: DotNetCoreCLI@2
displayName: Run solution tests
inputs:
command: test
projects: Contoso.sln
arguments: --configuration Release --max-parallel-test-modules 4
workingDirectory: $(Build.SourcesDirectory)
publishTestResults: true
DotNetCoreCLI@2Úkol se pro řešení vyvolá dotnet test jednou. Příkaz obnoví závislosti, sestaví řešení a paralelně spustí testovací moduly MTP. Ve výchozím nastavení dotnet test spustí až Environment.ProcessorCount modulů najednou. Příklad používá --max-parallel-test-modules 4 k omezení souběžnosti na čtyři moduly. Upravte limit tak, aby odpovídal procesoru, paměti a dalším prostředkům vašeho agenta.
Důležité
Vyberte soubor řešení v projects, ne vzor souboru projektu, například **/*.csproj. Úloha se pro každý odpovídající soubor vyvolá dotnet test samostatně, jeden za druhým. Jediné spuštění řešení umožňuje dotnet test koordinovat paralelní provádění napříč svými testovacími projekty.
Paralelismus na úrovni modulu je oddělený od paralelního provádění testů v rámci modulu. Ke konfiguraci paralelních testů v rámci assembly použijte nastavení testovacího frameworku. Pro nástroj MSTest viz ParallelizeAttribute.
Úloha publishTestResults: truepřidá --report-trx a --results-directory publikuje sestavy na kartě Testy spuštění kanálu, a to i v případě, že testy selžou. Nenulový dotnet test ukončovací kód také způsobí selhání úlohy i pipeline.
Poznámka:
Podpora MTP v DotNetCoreCLI@2 vyžaduje úlohu ve verzi 2.263.0 nebo novější. Ponechte global.json v pracovním adresáři úkolu, aby úloha i sada .NET SDK vybraly MTP.
Spustit řešení pomocí skriptu
Pro verze úloh bez podpory MTP nebo pro přímé řízení příkazu rozhraní příkazového řádku použijte skript a publikujte sestavy TRX v samostatném kroku. Stejné požadavky platí pro sadu .NET SDK, global.json a rozšíření TRX.
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 10.0.x
- task: CmdLine@2
displayName: Run solution tests
inputs:
script: >-
dotnet test --solution Contoso.sln
--configuration Release
--max-parallel-test-modules 4
--results-directory "$(Agent.TempDirectory)"
--report-trx
workingDirectory: $(Build.SourcesDirectory)
- task: PublishTestResults@2
displayName: Publish test results
condition: succeededOrFailed()
inputs:
testResultsFormat: VSTest
testResultsFiles: '**/*.trx'
searchFolder: $(Agent.TempDirectory)
failTaskOnFailedTests: true
failTaskOnMissingResultsFile: true
Podmínka succeededOrFailed() publikuje výsledky po úspěšném nebo neúspěšném testovacím spuštění. Nenulový ukončovací kód skriptu stále způsobí selhání pipeline. Abyste se vyhnuli přepsání sestav mezi moduly, nepřiřaďte ke každému modulu stejný název souboru TRX. Možnosti pojmenování a izolace najdete v tématu Názvy souborů sestav.
Spusťte jeden testovací spustitelný soubor
Pro jeden testovací projekt sestavte nebo publikujte projekt před tím, než vyvoláte jeho spustitelný soubor přímo:
- task: CmdLine@2
displayName: "Run Contoso.MyTests"
inputs:
script: '.\Contoso.MyTests\bin\Debug\net10.0\Contoso.MyTests.exe'