Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
MSTest, Microsoft Testing Framework, is een testframework voor .NET-toepassingen. Hiermee kunt u tests schrijven en uitvoeren en testsuites bieden met integratie met Visual Studio en Visual Studio Code Test Explorers, de .NET CLI en veel CI-pijplijnen.
MSTest is een volledig ondersteund opensource- en een platformoverschrijdend testframework dat werkt met alle ondersteunde .NET-doelen (.NET Framework, .NET Core, .NET, .NET, UWP, WinUI, enzovoort) die worden gehost op GitHub.
Runsettings
Een .runsettings-bestand kan worden gebruikt om te configureren hoe eenheidstests worden uitgevoerd. Voor meer informatie over de runsettings en de configuraties die betrekking hebben op het platform, kunt u de documentatie van VSTest runsettings of MSTest runner runsettings raadplegen.
MSTest-element
Met de volgende runettings-vermeldingen kunt u configureren hoe MSTest zich gedraagt.
| Configuratie | Standaard | Waarden |
|---|---|---|
AssemblyCleanupTimeout |
Geen | Specificeer algemeen de time-out die moet worden toegepast op elke instantie van de cleanup-methode voor assemblages.
[Timeout] kenmerk dat is opgegeven voor de assembly-opschoonmethode overschrijft de globale time-out. |
AssemblyInitializeTimeout |
Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de assembly-initialisatiemethode.
[Timeout] het kenmerk dat is opgegeven voor de assembly-initialisatiemethode overschrijft de globale time-out. |
AssemblyResolution |
onwaar | U kunt paden naar extra assembly's opgeven bij het zoeken en uitvoeren van eenheidstests. Gebruik deze paden bijvoorbeeld voor afhankelijkheidsassembly's die zich niet in dezelfde map bevinden als de testassembly. Als u een pad wilt opgeven, gebruikt u een directorypad-element. Paden kunnen omgevingsvariabelen bevatten.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>Deze functie wordt alleen toegepast wanneer u een .NET Framework-doel gebruikt. |
CaptureTraceOutput |
Result |
Leg tekst van de Console.Write*, Trace.Write*en Debug.Write* API's vast en koppel deze aan de huidige test. Te beginnen met MSTest 4.4, gebruik None, Resultof Live.
Liveook echo's Consoleen TraceTestContext.Write* uitvoer naar de console terwijl de test wordt uitgevoerd. De eerdere Booleaanse waarden blijven ondersteund: true wordt toegewezen aan Resulten false wordt toegewezen aan None. |
ClassCleanupLifecycle |
EndOfClass | Als u wilt dat de klasse wordt opgeschoond aan het einde van de assembly, stelt u deze in op EndOfAssembly. (Niet langer ondersteund vanaf MSTest v4, aangezien EndOfClass het standaard- en enige ClassCleanup-gedrag is) |
ClassCleanupTimeout |
Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-opschoonmethode.
[Timeout] attribuut dat is opgegeven in de opruimmethode van de klasse overschrijft de globale time-out. |
ClassInitializeTimeout |
Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-initialisatiemethode.
[Timeout] kenmerk dat is opgegeven voor de methode class initialize overschrijft de globale time-out. |
ConsiderFixturesAsSpecialTests |
onwaar | Stel deze waarde in op AssemblyInitialize om AssemblyCleanup, ClassInitialize, ClassCleanup, Test Explorer als afzonderlijke vermeldingen weer te geven in Visual Studio en Visual Studio Code en in het .trx logboek. |
DeleteDeploymentDirectoryAfterTestRunIsComplete |
waar | Als u de implementatiemap wilt behouden na een testuitvoering, stelt u deze waarde in op false. |
DeploymentEnabled |
waar | Als u de waarde instelt op false, worden deploymentitems die u in uw testmethode opgeeft, niet gekopieerd naar de implementatiemap. |
DeployTestSourceDependencies |
waar | Een waarde die aangeeft of de bronverwijzingen voor de test moeten worden geïmplementeerd. |
EnableBaseClassTestMethodsFromOtherAssemblies |
waar | Een waarde die aangeeft of detectie van testmethoden uit basisklassen in een andere assembly moet worden ingeschakeld dan de overnemende testklasse. |
ForcedLegacyMode |
onwaar | In oudere versies van Visual Studio is de MSTest-adapter geoptimaliseerd om deze sneller en beter schaalbaar te maken. Sommige gedragingen, zoals de volgorde waarin tests worden uitgevoerd, zijn mogelijk niet precies zoals in eerdere edities van Visual Studio. Stel de waarde in op true om de oudere testadapter te gebruiken. U kunt deze instelling bijvoorbeeld gebruiken als u een app.config-bestand hebt opgegeven voor een eenheidstest. U wordt aangeraden uw tests te herstructureren zodat u de nieuwere adapter kunt gebruiken. |
GlobalTestCleanupTimeout |
TestCleanupTimeout |
Geef vanaf MSTest 4.4 de time-out op voor elke algemene testopschoonmethode. Wanneer u deze vermelding weglaat, gebruikt TestCleanupTimeoutMSTest . Een [Timeout] kenmerk in de methode overschrijft beide waarden. |
GlobalTestInitializeTimeout |
TestInitializeTimeout |
Geef vanaf MSTest 4.4 de time-out op voor elke algemene test-initialisatiemethode. Wanneer u deze vermelding weglaat, gebruikt TestInitializeTimeoutMSTest . Een [Timeout] kenmerk in de methode overschrijft beide waarden. |
LaunchDebuggerOnTestFailure |
onwaar | Vanaf MSTest 4.2, wanneer deze is ingesteld op true, start MSTest het foutopsporingsprogramma wanneer een test mislukt. |
MapInconclusiveToFailed |
onwaar | Als een test is voltooid met een niet-overtuigende status, wordt deze toegewezen aan de overgeslagen status in Test Explorer. Als u wilt dat niet-overtuigende tests worden weergegeven als mislukt, stelt u de waarde in op true. |
MapNotRunnableToFailed |
waar | Een waarde die aangeeft of een niet-uitvoerbaar resultaat wordt gemapt naar een mislukte test. |
OrderTestsByNameInClass |
onwaar | Als u tests wilt uitvoeren op basis van testnamen, zowel in Test Explorers als via de opdrachtregel, stelt u deze waarde in op true. |
Parallelize |
Wordt gebruikt om de instellingen voor parallelle uitvoering in te stellen:Workers: Het aantal threads/werkrollen dat moet worden gebruikt voor parallelle uitvoering, wat standaard het aantal processors op de huidige computer is.Scope: Het bereik van parallelle uitvoering. U kunt deze instellen op MethodLevel. Dit is standaard ClassLevel.<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
RandomizeTestOrder |
onwaar | Vanaf MSTest 4.3 stelt u deze waarde in op waar om tests in een willekeurige volgorde uit te voeren, zodat verborgen volgordeafhankelijkheden tussen tests worden weergegeven. Deze instelling kan niet worden gecombineerd met OrderTestsByNameInClass. |
RandomTestOrderSeed |
Vanaf MSTest 4.3 stelt u, wanneer RandomizeTestOrdertrue is, een geheel getal als seed in om de willekeurige volgorde in verschillende uitvoeringen reproduceerbaar te maken. Als dit niet is ingesteld, wordt voor elke uitvoering een nieuwe seed gebruikt. |
|
SettingsFile |
U kunt hier een testinstellingenbestand opgeven dat moet worden gebruikt met de MSTest-adapter. U kunt ook een testinstellingenbestand opgeven in het instellingenmenu. Als u deze waarde opgeeft, moet u de ForcedLegacyMode ook op true instellen.<ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout |
Geen | Geef globaal de time-out op die moet worden toegepast op elke instantie van de test-opschoonmethode.
[Timeout] attribuut dat is opgegeven voor de testopschoonmethode overschrijft de globale timeout. |
TestInitializeTimeout |
Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de test-initialisatiemethode.
[Timeout] kenmerk dat is opgegeven voor de test initialize-methode overschrijft de globale time-out. |
TestTimeout |
Geen | Hiermee wordt de gespecificeerde time-out voor globale testcases verkregen. |
TreatClassAndAssemblyCleanupWarningsAsErrors |
onwaar | Stel deze waarde in op true als u uw fouten in klasseopruimingen als fouten wilt beschouwen. |
TreatDiscoveryWarningsAsErrors |
onwaar | Als u detectiewaarschuwingen als fouten wilt rapporteren, stelt u deze waarde in op true. |
Time-outwaarden moeten positieve gehele getallen in milliseconden zijn. Als u zonder een time-out wilt uitvoeren, laat u de vermelding weg in plaats van deze in te stellen op 0. Time-outs voor globale testarmaturen nemen de bijbehorende TestInitializeTimeout waarde over TestCleanupTimeout .
TestRunParameter Element
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Testuitvoeringsparameters bieden een manier om variabelen en waarden te definiëren die tijdens runtime beschikbaar zijn voor de tests. Open de parameters met behulp van de eigenschap MSTest TestContext.Properties :
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Als u testuitvoeringsparameters wilt gebruiken, voegt u een openbare TestContext eigenschap toe aan uw testklasse.
Voorbeeld van .runsettings-bestand
In de volgende XML ziet u de inhoud van een typisch RUNETTINGS-bestand . Kopieer deze code en bewerk deze naar wens.
Elk element van het bestand is optioneel omdat het een standaardwaarde heeft.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<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
Wanneer u uw tests uitvoert met MSTest, kunt u een testconfig.json-bestand gebruiken om het gedrag van de testrunner te configureren. Het testconfig.json-bestand is een JSON-bestand dat de configuratie-instellingen voor de testrunner bevat. Het bestand wordt gebruikt om de testrunner en de testuitvoeringsomgeving te configureren. Raadpleeg de documentatie voor MTP testconfig.json voor meer informatie.
Vanaf MSTest 3.7 kunt u MSTest-uitvoeringen ook configureren in hetzelfde configuratiebestand. In de volgende secties worden de instellingen beschreven die u in het bestand testconfig.json kunt gebruiken.
Vanaf MSTest 4.3.3 accepteren .NET Framework-uitvoeringen ook opmerkingen en volgkomma's in testconfig.json.
MSTest-element
MSTest-instellingen worden gegroepeerd op functionaliteit die wordt beschreven in de volgende secties.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| activeerTestMethodenVanBasisKlassenUitAndereAssemblies | waar | Een waarde die aangeeft of detectie van testmethoden uit basisklassen in een andere assembly moet worden ingeschakeld dan de overnemende testklasse. |
| klasseCleanupLifecycle | EndOfAssembly | Als u wilt dat de klasse wordt opgeschoond aan het einde van de klasse, stelt u deze in op EndOfClass-. |
instellingen voor assemblyResolution
Alle instellingen in deze sectie behoren tot het element assemblyResolution.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| Paden | Geen | U kunt paden naar extra assembly's opgeven bij het zoeken en uitvoeren van eenheidstests. Gebruik deze paden bijvoorbeeld voor afhankelijkheidsassembly's die zich niet in dezelfde map bevinden als de testassembly. U kunt een pad opgeven in de vorm { "path": "...", "includeSubDirectories": "true/false" }. |
Voorbeeld:
{
"mstest": {
"assemblyResolution": {
{ "path": "...", "includeSubDirectories": "true/false" }
}
}
}
instellingen voor deployment
Alle instellingen in deze sectie behoren tot het element deployment.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| verwijderDeploydirectoryNaVoltooiingTestuitvoering | waar | Als u de implementatiemap wilt behouden na een testuitvoering, stelt u deze waarde in op false. |
| deployTestSourceDependencies | waar | Geeft aan of de bronverwijzingen voor de test moeten worden geïmplementeerd. |
| Ingeschakeld | waar | Als u de waarde instelt op false, worden deploymentitems die u in uw testmethode opgeeft, niet gekopieerd naar de implementatiemap. |
Voorbeeld:
{
"mstest": {
"deployment": {
"deleteDeploymentDirectoryAfterTestRunIsComplete": true,
"deployTestSourceDependencies": true,
"enabled": true
}
}
}
instellingen voor output
Alle instellingen in deze sectie behoren tot het element output.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| captureTrace | Result |
Leg Console, Traceen Debug uitvoer vast en koppel deze aan de huidige test. Te beginnen met MSTest 4.4, gebruik None, Resultof Live.
Live echo's ook uitvoer, inclusief TestContext.Write* berichten, terwijl de test wordt uitgevoerd. De Booleaanse waarden blijven ondersteund: true wordt toegewezen aan Resulten false wordt toegewezen aan None. |
Voorbeeld:
{
"mstest": {
"output": {
"captureTrace": false
}
}
}
instellingen voor parallelism
Alle instellingen in deze sectie behoren tot het element parallelism.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| Ingeschakeld | onwaar | Schakel testparallellisatie in. |
| reikwijdte | klas | Het bereik van parallelisatie. U kunt deze instellen op method. De standaardinstelling, class, komt overeen met het sequentieel uitvoeren van alle tests van een bepaalde klasse, maar meerdere klassen parallel. |
| arbeiders | 0 | Het aantal threads/processen dat moet worden gebruikt voor parallellisatie. De standaardwaarde wordt toegewezen aan het aantal processors op de huidige computer. |
Voorbeeld:
{
"mstest": {
"parallelism": {
"enabled": true,
"scope": "method",
"workers": 32
}
}
}
instellingen voor execution
Alle instellingen in deze sectie behoren tot het element execution.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| beschouw een lege gegevensbron als niet doorslaggevend | onwaar | Als deze is ingesteld op true, wordt een lege gegevensbron beschouwd als niet-overtuigend. |
| beschouw Fixtures Als Speciale Tests | onwaar | Als u AssemblyInitialize, AssemblyCleanup, ClassInitializewilt weergeven, ClassCleanup als afzonderlijke vermeldingen in Visual Studio en Visual Studio Code Test Explorer en .trx-logboek, stelt u deze waarde in op true. |
| afhankelijkheden | Vanaf MSTest 4.4 declareert u de testafhankelijkheid chains en nodes. Deze instelling is alleen beschikbaar voor Microsoft. Testing.Platform. Zie Afhankelijkheden testen voor meer informatie. |
|
| KoppelInconclusiefAanMislukt | onwaar | Als een test is voltooid met een niet-overtuigende status, wordt deze toegewezen aan de overgeslagen status in Test Explorer. Als u wilt dat niet-overtuigende tests worden weergegeven als mislukt, stelt u de waarde in op true. |
| launchDebuggerOnTestFailure | onwaar | Vanaf MSTest 4.2, wanneer deze is ingesteld trueop, start MSTest het foutopsporingsprogramma wanneer een test mislukt. |
| mapNietUitvoerbaarNaarMislukt | waar | Een waarde die aangeeft of een niet-uitvoerbaar resultaat wordt gemapt naar een mislukte test. |
| sorteerTestsOpNaamInKlasse | onwaar | Voer tests in alfabetische volgorde uit binnen elke klasse. Gebruik vanaf MSTest 4.3 mstest.execution.orderTestsByNameInClass. De eerdere mstest.orderTestsByNameInClass sleutel werkt nog steeds, maar produceert een afschaffingswaarschuwing. |
| randomizeTestOrder | onwaar | Vanaf MSTest 4.3 stelt u deze waarde in op true om tests in een willekeurige volgorde uit te voeren, waardoor verborgen volgordeafhankelijkheden tussen tests aan het licht komen. Deze instelling kan niet worden gecombineerd met orderTestsByNameInClass. |
| randomTestOrderSeed | Vanaf MSTest 4.3 stelt u, wanneer randomizeTestOrder is ingesteld op true, een geheel zaadgetal in om de willekeurige volgorde in verschillende uitvoeringen reproduceerbaar te maken. Als dit niet is ingesteld, wordt voor elke uitvoering een nieuwe seed gebruikt. |
|
| behandelKlasseEnAssemblyOpschoonWaarschuwingenAlsFouten | onwaar | Stel deze waarde in op true als u uw fouten in klasseopruimingen als fouten wilt beschouwen. |
| waarschuwingenBijOntdekkingBehandelenAlsFouten | onwaar | Als u detectiewaarschuwingen als fouten wilt rapporteren, stelt u deze waarde in op true. |
Voorbeeld:
{
"mstest": {
"execution": {
"considerEmptyDataSourceAsInconclusive": false,
"considerFixturesAsSpecialTests": false,
"mapInconclusiveToFailed": true,
"mapNotRunnableToFailed": true,
"treatClassAndAssemblyCleanupWarningsAsErrors": false,
"treatDiscoveryWarningsAsErrors": false
}
}
}
instellingen voor timeout
Alle instellingen in deze sectie behoren tot het element timeout.
| Ingang | Standaard | Beschrijving |
|---|---|---|
| assemblageOpschoning | Geen | Specificeer algemeen de time-out die moet worden toegepast op elke instantie van de cleanup-methode voor assemblages. |
| assemblageInitialiseren | Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de assembly-initialisatiemethode. |
| classCleanup | Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-opschoonmethode. |
| classInitialiseren | Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-initialisatiemethode. |
| globalTestCleanup | testCleanup |
Geef vanaf MSTest 4.4 de time-out op voor elke algemene testopschoonmethode. Wanneer u deze vermelding weglaat, gebruikt testCleanupMSTest . |
| globalTestInitialize | testInitialize |
Geef vanaf MSTest 4.4 de time-out op voor elke algemene test-initialisatiemethode. Wanneer u deze vermelding weglaat, gebruikt testInitializeMSTest . |
| toets | Geen | Geef globaal de time-out voor de test op. |
| testCleanup | Geen | Geef globaal de time-out op die moet worden toegepast op elke instantie van de test-opschoonmethode. |
| testInitialiseren | Geen | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de test-initialisatiemethode. |
| gebruikCoöperatieve Annulering | onwaar | Wanneer ingesteld op true, activeert MSTest in geval van time-out alleen de annulering van de CancellationToken, maar stopt het niet met het observeren van de methode. Dit gedrag is beter presterend, maar is afhankelijk van de gebruiker om het token correct door alle paden te laten stromen. |
Notitie
Time-outwaarden moeten positieve gehele getallen in milliseconden zijn. Als u zonder een time-out wilt uitvoeren, laat u de vermelding weg in plaats van deze in te stellen op 0. Time-outs voor globale testarmaturen nemen de bijbehorende testInitialize waarde over testCleanup , dus laat beide vermeldingen weg wanneer u geen time-out wilt op een globale armaturen. Een [Timeout] kenmerk voor een methode overschrijft de geconfigureerde time-out.
Voorbeeld:
{
"mstest": {
"timeout": { "globalTestInitialize": 30000, "globalTestCleanup": 30000 }
}
}
Voorbeeld van testconfig.json-bestand
In de volgende JSON ziet u de inhoud van een typisch .testconfig.json bestand. Kopieer deze code en bewerk deze naar wens.
Elk element van het bestand is optioneel omdat het een standaardwaarde heeft.
{
"platformOptions": {
"resultDirectory": "./TestResults"
},
"mstest": {
"execution": {
"mapInconclusiveToFailed": true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests": false
},
"parallelism": {
"enabled": true,
"scope": "method"
},
"output": {
"captureTrace": false
}
}
}
MSBuild-eigenschappen
Vanaf MSTest 4.3 kunt u zich aanmelden voor parallellisatie op assemblyniveau vanuit uw projectbestand of Directory.Build.props zonder een [assembly: Parallelize] kenmerk te ontwerpen. Deze eigenschappen verzenden het bijbehorende assemblykenmerk tijdens de build, dus ze moeten GenerateAssemblyInfo zijn true (de standaardinstelling voor PROJECTEN in SDK-stijl).
| Property | Standaard | Beschrijving |
|---|---|---|
MSTestParallelizeScope |
De reikwijdte van de parallellisatie. Stel deze in op MethodLevel of ClassLevel om [assembly: Parallelize(Scope = ExecutionScope.MethodLevel)] (of ExecutionScope.ClassLevel) te verzenden, of op None om [assembly: DoNotParallelize] te verzenden. |
|
MSTestParallelizeWorkers |
Het maximumaantal workerthreads, weergegeven als de waarde Workers van [assembly: Parallelize]. Een waarde van 0 komt overeen met het aantal processoren op de huidige computer. Deze eigenschap kan niet worden ingesteld wanneer MSTestParallelizeScopeNone is. |
MSTest valideert beide eigenschappen tijdens de build. Ongeldige bereikwaarden, niet-gehele getallen voor werkrollen en een aantal werkrollen in combinatie met een None bereik mislukken de build. Declareer [assembly: Parallelize] of [assembly: DoNotParallelize] in de bron niet, omdat het gegenereerde kenmerk het dupliceert. Als GenerateAssemblyInfo dat het is false, declareert u in plaats daarvan het kenmerk in de bron.
In het volgende voorbeeld wordt parallellisatie op methodeniveau mogelijk met vier werkrollen voor elk testproject waarmee het Directory.Build.props bestand wordt geïmporteerd:
<Project>
<PropertyGroup>
<MSTestParallelizeScope>MethodLevel</MSTestParallelizeScope>
<MSTestParallelizeWorkers>4</MSTestParallelizeWorkers>
</PropertyGroup>
</Project>