Dela via


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 ClassInitializeClassCleanupTest 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å truebetraktas 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
    }
  }
}