Freigeben über


Konfigurieren von „MSTest“

MSTest (Microsoft Testing Framework) ist ein Testframework für .NET-Anwendungen. Sie können damit Tests schreiben und ausführen und Testsuites mit Integration in die Test-Explorer von Visual Studio und Visual Studio Code, die .NET CLI und viele CI-Pipelines bereitstellen.

MSTest ist ein vollständig unterstütztes und plattformübergreifendes Open-Source-Testframework, das mit allen unterstützten .NET-Zielen (.NET Framework, .NET Core, .NET, UWP, WinUI usw.) funktioniert, die auf GitHub gehostet werden.

Runsettings

Eine RUNSETTINGS-Datei kann verwendet werden, um die Ausführung von Komponententests zu konfigurieren. Weitere Informationen zur runsettings-Datei und den Konfigurationen im Zusammenhang mit der Plattform finden Sie in der VSTest-Dokumentation zur runsettings-Datei und der MSTest-Dokumentation zur runsettings-Datei für Runner.

MSTest-Element

Mit den folgenden runsettings-Einträgen können Sie konfigurieren, wie sich MSTest verhalten soll.

Konfiguration Standard Werte
AssemblyCleanupTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Assemblybereinigungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Assemblybereinigungsmethode angegeben ist, überschreibt das globale Timeout.
AssemblyInitializeTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Assemblyinitialisierungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Assemblyinitialisierungsmethode angegeben ist, überschreibt das globale Timeout.
AssemblyResolution False Sie können Pfade zu weiteren Assemblys angeben, wenn Komponententests gefunden und ausgeführt werden. Verwenden Sie diese Pfade beispielsweise für Abhängigkeitsassemblys, die sich nicht im selben Verzeichnis wie die Testassembly befinden. Um einen Pfad anzugeben, verwenden Sie ein Directory Path-Element. Pfade können Umgebungsvariablen enthalten.

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

Dieses Feature wird nur bei Verwendung eines .NET Framework-Ziels angewandt.
CaptureTraceOutput true Erfassen Sie Textnachrichten von den APIs Console.Write*, Trace.Write* und Debug.Write*, die dem aktuellen ausgeführten Test zugeordnet werden.
ClassCleanupLifecycle EndOfClass Wenn die Klassenbereinigung am Ende der Assembly erfolgen soll, legen Sie den Wert auf EndOfAssembly fest. (Wird ab MSTest 4 nicht mehr unterstützt, da EndOfClass das Standardverhalten und auch das einzige Verhalten für ClassCleanup ist.)
ClassCleanupTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Klassenbereinigungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Klassenbereinigungsmethode angegeben ist, überschreibt das globale Timeout.
ClassInitializeTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Klasseninitialisierungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Klasseninitialisierungsmethode angegeben ist, überschreibt das globale Timeout.
DeleteDeploymentDirectoryAfterTestRunIsComplete true Legen Sie diesen Wert auf FALSE fest, um das Bereitstellungsverzeichnis nach einem Testlauf beizubehalten.
DeploymentEnabled true Wenn Sie den Wert auf false festlegen, werden in der Testmethode angegebene Bereitstellungselemente nicht in das Bereitstellungsverzeichnis kopiert.
DeployTestSourceDependencies true Ein Wert, der angibt, ob die Testquellverweise bereitgestellt werden sollen.
EnableBaseClassTestMethodsFromOtherAssemblies true Ein Wert, der angibt, ob die Ermittlung von Testmethoden aus Basisklassen in einer anderen Assembly als der geerbten Testklasse aktiviert werden soll.
ForcedLegacyMode false In älteren Versionen von Visual Studio wurde der MSTest-Adapter für eine schnellere Geschwindigkeit und bessere Skalierbarkeit optimiert. Einige Verhalten, z. B. die Reihenfolge der Testausführung, sind möglicherweise nicht mehr so präzise wie in den vorherigen Versionen von Visual Studio. Legen Sie den Wert auf TRUE fest, um den älteren Testadapter zu verwenden.

Beispielsweise können Sie diese Einstellung verwenden, wenn Sie eine app.config-Datei für einen Komponententest angegeben haben.

Eventuell sollten Sie in Betracht ziehen, die Tests so umzugestalten, dass Sie den späteren Adapter verwenden können.
MapInconclusiveToFailed False Wird ein Test mit einem nicht eindeutigen Status abgeschlossen, wird er im Test-Explorer dem Status „Übersprungen“ zugeordnet. Wenn nicht eindeutige Tests als fehlerhaft angezeigt werden sollen, verwenden Sie den Wert TRUE.
MapNotRunnableToFailed true Ein Wert, der angibt, ob einem Test mit Fehler ein „Nicht ausführbar“-Ergebnis zugeordnet wird.
Parallelize Wird verwendet, um die Parallelisierungseinstellungen festzulegen:

Workers: Die Anzahl der Threads/Worker, die für die Parallelisierung verwendet werden sollen. Dies ist standardmäßig die Anzahl von Prozessoren auf dem aktuellen Computer.

SCOPE-: Der Bereich der Parallelisierung. Sie können dies auf MethodLevel festlegen. Die Standardeinstellung ist jedoch ClassLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
SettingsFile Sie können eine Testeinstellungsdatei, die mit dem MS-Testadapter verwendet werden soll, hier angeben. Sie können auch eine Testeinstellungsdatei im Menü „Einstellungen“ angeben.

Wenn Sie diesen Wert angeben, müssen Sie außerdem ForcedLegacyMode auf truefestlegen.

<ForcedLegacyMode>true</ForcedLegacyMode>
TestCleanupTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Testbereinigungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Testbereinigungsmethode angegeben ist, überschreibt das globale Timeout.
TestInitializeTimeout 0 Geben Sie global das Timeout an, das für jede Instanz der Testinitialisierungsmethode angewendet werden soll. Das [Timeout]-Attribut, das für die Testinitialisierungsmethode angegeben ist, überschreibt das globale Timeout.
TestTimeout 0 Ruft das angegebene globale Testfalltimeout ab.
TreatClassAndAssemblyCleanupWarningsAsErrors false Um Fehler in Klassenbereinigungen als Fehler anzuzeigen, legen Sie diesen Wert auf true fest.
TreatDiscoveryWarningsAsErrors false Wenn Sie Testerkennungswarnungen als Fehler melden möchten, legen Sie diesen Wert auf true fest.
ConsiderFixturesAsSpecialTests false Um AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup als einzelne Einträge im Protokoll Test Explorer und .trx von Visual Studio und Visual Studio Code anzuzeigen, legen Sie diesen Wert auf true fest.

TestRunParameter-Element

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>

Testlaufparameter bieten eine Möglichkeit zum Definieren von Variablen und Werten, die für die Tests zur Laufzeit verfügbar sind. Mithilfe der MSTest-Eigenschaft TestContext.Properties können Sie auf die Parameter zugreifen:

private string _appUrl;
public TestContext TestContext { get; set; }

[TestMethod]
public void HomePageTest()
{
    string _appUrl = TestContext.Properties["webAppUrl"];
}

Fügen Sie Ihrer Testklasse eine öffentliche TestContext-Eigenschaft hinzu, um Testlaufparameter zu verwenden.

Beispiel für eine RUNSETTINGS-Datei

Der folgende XML-Code ist ein Beispiel für den Inhalt einer typischen RUNSETTINGS-Datei. Kopieren Sie diesen Code, und passen Sie ihn Ihren Anforderungen entsprechend an.

Alle Elemente der Datei sind optional, da sie einen Standardwert enthalten.

<?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>