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>