Konfigurera MSTest
MSTest, Microsoft Testing Framework, är ett testramverk för .NET-program. Det gör att du kan skriva och köra tester och tillhandahålla testpaket med integrering till Visual Studio och Visual Studio Code Test Explorers, .NET CLI och många CI-pipelines.
MSTest är ett fullständigt stöd, öppen källkod och ett plattformsoberoende testramverk som fungerar med alla .NET-mål som stöds (.NET Framework, .NET Core, .NET, UWP, WinUI och så vidare) som finns på GitHub.
Körningar
En .runsettings-fil kan användas för att konfigurera hur enhetstester körs. Om du vill veta mer om körningar och konfigurationer relaterade till plattformen kan du läsa dokumentationen om VSTest-körningar eller dokumentationen om MSTest runner runsettings.
MSTest-element
Med följande runsettings-poster kan du konfigurera hur MSTest fungerar.
Konfiguration | Standardvärde | Värden |
---|---|---|
AssemblyCleanupTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt för varje instans av rensningsmetoden för sammansättning.
[Timeout] attributet som anges i rensningsmetoden för sammansättning åsidosätter den globala tidsgränsen . |
AssemblyInitializeTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av metoden för att initiera sammansättning.
[Timeout] attributet som anges i metoden för att initiera sammansättningen åsidosätter den globala tidsgränsen . |
AssemblyResolution | falskt | Du kan ange sökvägar till extra sammansättningar när du söker efter och kör enhetstester. Använd till exempel dessa sökvägar för beroendesammansättningar som inte finns i samma katalog som testsammansättningen. Om du vill ange en sökväg använder du ett katalogsökvägselement . Sökvägar kan innehålla miljövariabler.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution> Den här funktionen tillämpas endast när du använder ett .NET Framework-mål. |
CaptureTraceOutput | true | Samla in textmeddelanden som kommer från API:erna Console.Write* , Trace.Write* och Debug.Write* som kommer att associeras med det aktuella testet som körs. |
ClassCleanupLifecycle | EndOfClass | Om du vill att klassrensningen ska ske i slutet av sammansättningen anger du den till EndOfAssembly. (Stöds inte längre från MSTest v4 eftersom EndOfClass är standard och endast ClassCleanup-beteende ) |
ClassCleanupTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av klassrensningsmetoden.
[Timeout] attributet som anges på metoden för klassrensning åsidosätter den globala tidsgränsen. |
ClassInitializeTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av metoden för klassinitiering.
[Timeout] attributet som anges på metoden för klassinitiering åsidosätter den globala tidsgränsen. |
ConsiderFixturesAsSpecialTests | falskt | Om du vill visa , , , som enskilda poster i Visual Studio och Visual Studio Code AssemblyInitialize och AssemblyCleanup anger du värdet till true ClassInitialize ClassCleanup Test Explorer |
DeleteDeploymentDirectoryAfterTestRunIsComplete | true | Om du vill behålla distributionskatalogen efter en testkörning anger du värdet till false. |
DeploymentEnabled | true | Om du anger värdet till false kopieras inte distributionsobjekt som du anger i testmetoden till distributionskatalogen. |
DeployTestSourceDependencies | true | Ett värde som anger om testkällans referenser ska distribueras. |
EnableBaseClassTestMethodsFromOtherAssemblies | true | Ett värde som anger om du vill aktivera identifiering av testmetoder från basklasser i en annan sammansättning än den ärvande testklassen. |
ForcedLegacyMode | falskt | I äldre versioner av Visual Studio optimerades MSTest-adaptern för att göra den snabbare och mer skalbar. Vissa beteenden, till exempel i vilken ordning testerna körs, kanske inte är exakt som i tidigare utgåvor av Visual Studio. Ange värdet till true för att använda det äldre testkortet. Du kan till exempel använda den här inställningen om du har en app.config-fil angiven för ett enhetstest. Vi rekommenderar att du överväger att omstrukturera dina tester så att du kan använda det nyare adaptern. |
MapInconclusiveToFailed | falskt | Om ett test slutförs med en ofullständig status mappas det till den överhoppade statusen i Test Explorer. Om du vill att ofullständiga tester ska visas som misslyckade anger du värdet till sant. |
MapNotRunnableToFailed | true | Ett värde som anger om ett resultat som inte kan köras mappas till ett misslyckat test. |
OrderTestsByNameInClass | falskt | Om du vill köra tester med testnamn både i TestUtforskaren och på kommandoraden anger du värdet till sant. |
Parallellisera | Används för att ange parallelliseringsinställningarna: Arbetare: Antalet trådar/arbetare som ska användas för parallellisering, vilket som standard är antalet processorer på den aktuella datorn. OMFÅNG: Parallelliseringens omfattning. Du kan ange den till MethodLevel. Som standard är det ClassLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
InställningarFil | Du kan ange en testinställningsfil som ska användas med MSTest-adaptern här. Du kan också ange en testinställningsfil från inställningsmenyn. Om du anger det här värdet måste du också ange ForcedLegacyMode till true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av testrensningsmetoden.
[Timeout] attributet som anges på testrensningsmetoden åsidosätter den globala tidsgränsen. |
TestInitializeTimeout | 0 | Ange den tidsgräns som ska tillämpas globalt för varje instans av testinitieringsmetoden.
[Timeout] attributet som anges på testinitieringsmetoden åsidosätter den globala tidsgränsen. |
TestTimeout | 0 | Hämtar angiven tidsgräns för globala testfall. |
TreatClassAndAssemblyCleanupWarningsAsErrors | falskt | Om du vill se dina fel i klassrensningar som fel anger du värdet till true. |
TreatDiscoveryWarningsAsErrors | falskt | Om du vill rapportera testidentifieringsvarningar som fel anger du det här värdet till sant. |
TestRunParameter
element
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Testkörningsparametrar är ett sätt att definiera variabler och värden som är tillgängliga för testerna vid körning. Få åtkomst till parametrarna med egenskapen MSTest TestContext.Properties :
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Om du vill använda testkörningsparametrar lägger du till en offentlig TestContext egenskap i testklassen.
Exempel på .runsettings-fil
Följande XML visar innehållet i en typisk .runsettings-fil . Kopiera den här koden och redigera den så att den passar dina behov.
Varje element i filen är valfritt eftersom det har ett standardvärde.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at run time -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
testconfig.json
När du kör testerna med MSTest kan du använda en testconfig.json
-fil för att konfigurera testkörarnas beteende. Den testconfig.json
filen är en JSON-fil som innehåller konfigurationsinställningarna för testlöparen. Filen används för att konfigurera testlöparen och testkörningsmiljön. Mer information finns i dokumentationen Microsoft.Testing.Platform testconfig.json.
Från och med MSTest 3.7 kan du även konfigurera MSTest-körningar i samma konfigurationsfil. I följande avsnitt beskrivs de inställningar som du kan använda i filen testconfig.json
.
MSTest-element
MSTest-inställningarna grupperas efter funktioner som beskrivs i de avsnitt som följer.
Inträde | Standardvärde | Beskrivning |
---|---|---|
orderTesternaEfterNamnIKlass | falskt | Om du vill köra tester med testnamn både i TestUtforskaren och på kommandoraden anger du värdet till sant. |
enableBaseClassTestMethodsFromOtherAssemblies (Aktivera testmetoder från basklass i andra sammansättningar) | true | Ett värde som anger om du vill aktivera identifiering av testmetoder från basklasser i en annan sammansättning än den ärvande testklassen. |
classCleanupLifecycle | EndOfAssembly | Om du vill att klassrensningen ska ske i slutet av klassen anger du den till EndOfClass-. |
Inställningar för AssemblyResolution
Inträde | Standardvärde | Beskrivning |
---|---|---|
Sökvägar | Ingen | Du kan ange sökvägar till extra sammansättningar när du söker efter och kör enhetstester. Använd till exempel dessa sökvägar för beroendesammansättningar som inte finns i samma katalog som testsammansättningen. Du kan ange en sökväg i formen { "path": "...", "includeSubDirectories": "true/false" } . |
Distributionsinställningar
Inträde | Standardvärde | Beskrivning |
---|---|---|
taBortDistribueringsKatalogEfterTestKörningenÄrSlutförd | true | Om du vill behålla distributionskatalogen efter en testkörning anger du värdet till false. |
deployTestSourceDependencies | true | Anger om referenserna för testkällan ska distribueras. |
Aktiverad | true | Om du anger värdet till false kopieras inte distributionsobjekt som du anger i testmetoden till distributionskatalogen. |
Utdatainställningar
Inträde | Standardvärde | Beskrivning |
---|---|---|
captureTrace | falskt | Samla in textmeddelanden som kommer från API:erna Console.Write* , Trace.Write* och Debug.Write* som kommer att associeras med det aktuella testet som körs. |
Parallellitetsinställningar
Inträde | Standardvärde | Beskrivning |
---|---|---|
Aktiverat | falskt | Aktivera testparallellisering. |
omfattning | klass | Parallelliseringens omfattning. Du kan ställa in den på method . Standardvärdet, class , motsvarar att köra alla tester av en viss klass sekventiellt men flera klasser parallellt. |
arbetare | 0 | Antalet trådar/arbetare som ska användas för parallellisering. Standardvärdet mappar till antalet processorer på den aktuella datorn. |
Körningsinställningar
Inträde | Standardvärde | Beskrivning |
---|---|---|
betraktaTomDatakällaSomInkonklusiv | falskt | När den är inställd på true betraktas en tom datakälla som ofullständig. |
ÖvervägAnordningarSomSpeciellaTester | falskt | Om du vill visa AssemblyInitialize , AssemblyCleanup , ClassInitialize , ClassCleanup som enskilda poster i Visual Studio och Visual Studio Code Test Explorer och .trx logg anger du värdet till sant. |
mappaOavgjortTillMisslyckat | falskt | Om ett test slutförs med en ofullständig status mappas det till den överhoppade statusen i Test Explorer. Om du vill att ofullständiga tester ska visas som misslyckade anger du värdet till sant. |
mapNotRunnableToFailed | true | Ett värde som anger om ett resultat som inte kan köras mappas till ett misslyckat test. |
behandlaKlassOchAssembliesRensningsvarningarSomFel | falskt | Om du vill se dina fel i klassrensningar som fel anger du värdet till true. |
behandlaUpptäckningsvarningarSomFel | falskt | Om du vill rapportera testidentifieringsvarningar som fel anger du det här värdet till sant. |
Tidsgränsinställningar
Inträde | Standardvärde | Beskrivning |
---|---|---|
monteringsrengöring | 0 | Ange den tidsgräns som ska tillämpas globalt för varje instans av rensningsmetoden för sammansättning. |
assemblyInitialize | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av metoden för att initiera sammansättning. |
classCleanup | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av klassrensningsmetoden. |
classInitialize | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av metoden för klassinitiering. |
test | 0 | Ange tidsgränsen för testet globalt. |
testCleanup | 0 | Ange den tidsgräns som ska tillämpas globalt på varje instans av testrensningsmetoden. |
testInitialize | 0 | Ange den tidsgräns som ska tillämpas globalt för varje instans av testinitieringsmetoden. |
AnvändSamarbetsAvbokning | falskt | När värdet är inställt på true , vid timeout, kommer MSTest endast att utlösa annullering av CancellationToken , men slutar inte att övervaka metoden. Det här beteendet är mer effektivt men förlitar sig på att användaren överför token korrekt genom alla vägar. |
Note
[Timeout]
-attributet som anges på en metod överstyr den globala tidsgränsen. Till exempel åsidosätter [Timeout(1000)]
på en metod som markerats med [AssemblyCleanup] den globala assemblyCleanup
tidsgränsen.
Exempel på testconfig.json fil
Följande JSON visar innehållet i en typisk .testconfig.json fil. Kopiera den här koden och redigera den så att den passar dina behov.
Varje element i filen är valfritt eftersom det har ett standardvärde.
{
"platformOptions": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}