MSTest configureren
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 | 0 | 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 | 0 | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de assembly-initialisatiemethode.
[Timeout] kenmerk dat is opgegeven voor de assembly initialize methode overschrijft de globale time-out. |
AssemblyResolution | false | 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 | waar | Leg sms-berichten vast die afkomstig zijn van de Console.Write* , Trace.Write* en Debug.Write* API's die worden gekoppeld aan de huidige actieve test. |
ClassCleanupLifecycle | EndOfClass | Als u wilt dat de klasse wordt opgeschoond aan het einde van de assembly, stelt u deze in op EndOfAssembly. (Niet meer ondersteund vanaf MSTest v4 omdat EndOfClass de standaardinstelling is en alleen ClassCleanup-gedrag ) |
ClassCleanupTimeout | 0 | 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 | 0 | 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. |
BeschouwFixturesAlsSpecialeTests | false | Stel deze waarde in op true om AssemblyInitialize , AssemblyCleanup , ClassInitialize , ClassCleanup als afzonderlijke vermeldingen weer te geven in Visual Studio en Visual Studio Code en in het Test Explorer .trx logboek. |
VerwijderImplementatiemapNaVoltooiingVanTestRun | 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. |
MapInconclusiveToFailed | false | 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. |
NietUitvoerbaarNaarMislukt | 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. |
Parallelliseren | Wordt gebruikt om de instellingen voor parallelle uitvoering in te stellen: Werkrollen: het aantal threads/werkrollen dat moet worden gebruikt voor parallelle uitvoering, wat standaard het aantal processors op de huidige computer is. BEREIK: Het bereik van parallelle uitvoering. U kunt deze instellen op MethodLevel. Standaard is het ClassLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
Instellingenbestand | 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 instellen op true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | 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 | 0 | 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 | 0 | 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. |
BehandelOntdekkingsWaarschuwingenAlsFouten | false | Als u detectiewaarschuwingen als fouten wilt rapporteren, stelt u deze waarde in op true. |
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 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
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 documentatie van Microsoft.Testing.Platform testconfig.jsonvoor 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.
MSTest-element
MSTest-instellingen worden gegroepeerd op functionaliteit die wordt beschreven in de volgende secties.
Ingang | Standaard | Beschrijving |
---|---|---|
sorteerTestsOpNaamInKlasse | 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. |
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 implementatie-items 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 | waar | Leg sms-berichten vast die afkomstig zijn van de Console.Write* , Trace.Write* en Debug.Write* API's die worden gekoppeld aan de huidige actieve test. |
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 | false | Als deze is ingesteld op true , wordt een lege gegevensbron beschouwd als niet-overtuigend. |
beschouw Fixtures Als Speciale Tests | onwaar | Als u AssemblyInitialize , AssemblyCleanup , ClassInitialize wilt weergeven, ClassCleanup als afzonderlijke vermeldingen in Visual Studio en Visual Studio Code Test Explorer en .trx-logboek, stelt u deze waarde in op true. |
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. |
mapNietUitvoerbaarNaarMislukt | waar | Een waarde die aangeeft of een niet-uitvoerbaar resultaat wordt gemapt naar een mislukte test. |
treatClassAndAssemblyCleanupWarningsAsErrors | onwaar | Als u uw fouten in klasseopruimingen als fouten wilt zien, stelt u deze waarde in op true. |
waarschuwingenBijOntdekkingBehandelenAlsFouten | false | Stel deze waarde in op true om detectiewaarschuwingen als fouten te rapporteren. |
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 | 0 | Geef algemeen de time-out op die moet worden toegepast op elke instantie van de assembly-opschoonmethode. |
assemblageInitialiseren | 0 | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de assembly-initialisatiemethode. |
classCleanup | 0 | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-opschoonmethode. |
classInitialize | 0 | Geef globaal de time-out op die moet worden toegepast op elk exemplaar van de klasse-initialisatiemethode. |
test | 0 | Geef globaal de time-out voor de test op. |
testCleanup | 0 | Geef algemeen de time-out op die moet worden toegepast op iedere instantie van de test-opschoonmethode. |
testInitialiseren | 0 | 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
[Timeout]
kenmerk dat is opgegeven voor een methode, overschrijft de globale time-out. Als u bijvoorbeeld [Timeout(1000)]
instelt op een methode die is gemarkeerd met [AssemblyCleanup], zal dit de globale time-out van assemblyCleanup
overschrijven.
Voorbeeld:
{
"mstest": {
"timeout": {
"assemblyCleanup": 0,
"assemblyInitialize": 0,
"classCleanup": 0,
"classInitialize": 0,
"test": 0,
"testCleanup": 0,
"testInitialize": 0,
"useCooperativeCancellation": false
}
}
}
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": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}