Bearbeiten einer XML-Datei für die Testlaufkonfiguration
Aktualisiert: November 2007
Wie in Gewusst wie: Bearbeiten einer Testlaufkonfigurationsdatei beschrieben kann eine Testlaufkonfiguration auf zwei Arten geändert werden: mithilfe des Testlaufkonfigurations-Editors oder durch Bearbeiten des XML-Codes der Testlaufkonfigurationsdatei. Im Allgemeinen sollten Sie die Testlaufkonfiguration zuerst mithilfe des Testlaufkonfigurations-Editors ändern. Wenn die gewünschte Konfigurationseinstellung nicht auf diese Weise geändert werden kann, bearbeiten Sie die Testlaufkonfigurationsdatei.
Um Ihnen eine Hilfestellung zur geeigneten Methode zu geben, wird im folgenden Thema die allgemeine Struktur einer Testlaufkonfigurationsdatei erklärt. Darin sind zwei Beispiele mit Einstellungen enthalten, die manuell, aber nicht mit dem Testlaufkonfigurations-Editor bearbeitet werden können.
Wenn Sie Testlaufkonfigurationseinstellungen mithilfe des Testlaufkonfigurations-Editors ändern, werden die Änderungen in dieser Datei angezeigt. Wenn Sie Werte in dieser Datei ändern, werden einige, aber nicht alle Änderungen im Testlaufkonfigurations-Editor angezeigt.
Weitere Informationen zum Verwenden des Testlaufkonfigurations-Editors finden Sie unter Gewusst wie: Angeben einer Testlaufkonfiguration.
Beispiel für eine Testlaufkonfigurationsdatei
In der folgenden Beispieldatei werden bestimmte Elemente in fett formatiertem Text angezeigt. Diese Elemente entsprechen allgemeinen Bereichen von Einstellungen, die durch Verwendung des Testlaufkonfigurations-Editors vorgenommen werden können.
<?xml version="1.0" encoding="utf-8"?>
<Tests>
<TestRunConfiguration type="Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration">
<id type="Microsoft.VisualStudio.TestTools.Common.TestRunConfigurationId">
<id type="System.Guid">5d9344ed-bbde-4850-b05e-a7058096e956</id>
</id>
<name type="System.String">TestRunConfig1</name>
<description type="System.String">This is a default test run configuration for a local test run.</description>
<isCodeCoverageEnabled type="System.Boolean">True</isCodeCoverageEnabled>
<codeCoverageItems type="System.Collections.Generic.List`1[[Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]">
<_items type="Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem[]">
<element type="Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem">
<binaryFile type="System.String">bin\Debug\ClassLibrary1.dll</binaryFile>
<keyFile type="System.String">Library1.snk</keyFile>
<pdbFile type="System.String">bin\Debug\ClassLibrary1.pdb</pdbFile>
<instrumentInPlace type="System.Boolean">True</instrumentInPlace>
<outputDirectory type="System.String" />
</element>
</_items><_size type="System.Int32">1</_size>
<_version type="System.Int32">1</_version>
</codeCoverageItems>
<codeCoverageKeyFile type="System.String" />
<aspNetProjectCoverageItems type="System.Collections.Generic.List`1[
[Microsoft.VisualStudio.TestTools.Common.AspNetProjectItem, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]">
<_size type="System.Int32">0</_size>
<_version type="System.Int32">0</_version>
</aspNetProjectCoverageItems>
<isExecutedRemotely type="System.Boolean">False</isExecutedRemotely>
<bucketSize type="System.Int32">200</bucketSize>
<bucketThreshold type="System.Int32">1000</bucketThreshold>
<runTimeout type="System.Int32">0</runTimeout>
<testTimeout type="System.Int32">300000</testTimeout>
<agentNotRespondingTimeout type="System.Int32">300000</agentNotRespondingTimeout>
<deploymentTimeout type="System.Int32">300000</deploymentTimeout>
<controllerName type="System.String" />
<plugins type="System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]">
<_size type="System.Int32">0</_size>
<_version type="System.Int32">0</_version>
</plugins>
<testTypeSpecificData type="System.Collections.Generic.Dictionary`2[[Microsoft.VisualStudio.TestTools.Common.TestType, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.VisualStudio.TestTools.Common.ITestTypeSpecificRunConfigurationData, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]">
<buckets type="System.Int32">-1,-1,0</buckets>
<entries type="System.Collections.Generic.Dictionary`2+Entry[[Microsoft.VisualStudio.TestTools.Common.TestType, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Microsoft.VisualStudio.TestTools.Common.ITestTypeSpecificRunConfigurationData, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]][]">
<element type="Microsoft.VisualStudio.TestTools.WebTesting.WebTestRequestHeader, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<m_name type="System.String">User-Agent</m_name>
<m_value type="System.String">Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</m_value>
</element>
</entries>
<count type="System.Int32">1</count>
<version type="System.Int32">1</version>
<freeList type="System.Int32">-1</freeList>
<freeCount type="System.Int32">0</freeCount>
<comparer type="System.Collections.Generic.ObjectEqualityComparer`1[[Microsoft.VisualStudio.TestTools.Common.TestType, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]" />
</testTypeSpecificData>
<userDeploymentRoot type="System.String" />
<useDefaultDeploymentRoot type="System.Boolean">True</useDefaultDeploymentRoot>
<deploymentItems type="Microsoft.VisualStudio.TestTools.Common.DeploymentItemCollection" />
<testRunNamingScheme type="Microsoft.VisualStudio.TestTools.Common.TestRunNamingScheme">
<appendTimeStamp type="System.Boolean">True</appendTimeStamp>
<useDefault type="System.Boolean">True</useDefault>
</testRunNamingScheme>
<setupCommand type="System.String" />
<cleanupCommand type="System.String" />
<abortRunOnError type="System.Boolean">False</abortRunOnError>
<mapIPAddresses type="System.Boolean">False</mapIPAddresses>
<agentProperties type="System.Collections.Specialized.StringDictionary, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<hostData type="Microsoft.VisualStudio.TestTools.Common.HostRunConfigurationData">
<mapHostSpecificData type="System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],
[Microsoft.VisualStudio.TestTools.Common.IHostSpecificRunConfigurationData, Microsoft.VisualStudio.QualityTools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]">
<count type="System.Int32">0</count>
<version type="System.Int32">0</version>
<freeList type="System.Int32">0</freeList>
<freeCount type="System.Int32">0</freeCount>
<comparer type="System.Collections.Generic.GenericEqualityComparer`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]" />
</mapHostSpecificData>
</hostData>
<ignoredDependentAssemblies type="System.String" />
<apartmentState type="System.Threading.ApartmentState">
<value__ type="System.Int32">0</value__>
</apartmentState>
</TestRunConfiguration>
</Tests>
Beispiele
In den folgenden Abschnitten wird erklärt, wie Sie bestimmte Änderungen in der XML-Datei vornehmen können, durch die die Testlaufkonfiguration gesteuert wird. Da diese Änderungen mit dem Testlaufkonfigurations-Editor nicht möglich sind, müssen sie in der XML-Datei ausgeführt werden.
Ändern des Standardspeicherorts für Testergebnisse
Ändern des Speicherorts der Instrumentation und Angeben von zusätzlichen Schlüsseldateien
Ändern des Standardspeicherorts für Testergebnisse
Beim Ausführen von Tests werden die Ergebnisse automatisch in einen Standardspeicherort auf der Festplatte gespeichert. Wenn die XML-Datei der Testlaufkonfiguration nicht geändert wird, behält die boolesche Variable useDefaultDeploymentRoot den Standardwert True bei. In diesem Fall werden die Testergebnisse an den folgenden Speicherorten gespeichert:
Die Ergebnisse der Tests, die Sie in der Visual Studio-IDE (Integrated Development Environment) ausführen, werden im Ordner TestResults unter dem gegenwärtigen Projektmappenordner gespeichert.
Die Ergebnisse der Tests, die Sie mithilfe des Befehlszeilenbefehls MSTest.exe ausführen, werden im Ordner TestResults unter dem aktuellen Ordner gespeichert.
Dieser Standardspeicherort kann durch Ändern von zwei Einstellungen geändert werden. Setzen Sie zuerst useDefaultDeploymentRoot auf False. Geben Sie anschließend einen neuen Wert für den Standardordner an.
Ändern Sie z. B.:
<useDefaultDeploymentRoot type="System.Boolean">True</useDefaultDeploymentRoot>
in:
<useDefaultDeploymentRoot type="System.Boolean">False</useDefaultDeploymentRoot >
<userDeploymentRoot
type="System.String">C:\My Documents\Visual Studio\Projects\MyResults</userDeploymentRoot>
<runDeploymentRoot type="System.String" />
Ändern des Speicherorts der Codeabdeckungsinstrumentation und Angeben von zusätzlichen Schlüsseldateien für erneutes Signieren
Im Testlaufkonfigurations-Editor können Sie zu instrumentierende Artefakte auswählen, um Codeabdeckung zu aktivieren. Zusätzlich können Sie angeben, ob diese direkt instrumentiert werden sollen, und Sie können eine spezifische Schlüsseldatei angeben, mit der Assemblys mit starkem Namen nach der Instrumentation erneut signiert werden.
Diese Einstellungen gelten für den gesamten Testlauf. Das bedeutet, dass sie auf alle Assemblys angewendet werden. Wenn Sie bei einzelnen Assemblys andere Einstellungen verwenden möchten, müssen Sie diese in der XML-Datei der Testlaufkonfiguration festlegen.
In diesem Beispiel liegen zwei Binärdateien zur Codeabdeckung vor: ClassLibrary1.dll und ClassLibrary2.dll. Sie können z. B. angeben, dass ClassLibrary1.dll direkt instrumentiert wird, ClassLibrary2.dll jedoch nicht. Außerdem können Sie angeben, dass ClassLibrary1.dll nach der Instrumentation mit Library1.snk und ClassLibrary2.dll mit einer anderen Schlüsseldatei, Library2.snk, erneut signiert wird.
Die folgende XML-Datei veranschaulicht die Vorgehensweise. Die hier dargestellten Elemente, von denen jedes eine Assembly darstellt, sind untergeordnete Elemente des <codeCoverageItems>-Elements.
<element type="Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem">
<binaryFile type="System.String">bin\Debug\ClassLibrary1.dll</binaryFile>
<keyFile type="System.String">Library1.snk</keyFile>
<pdbFile type="System.String">bin\Debug\ClassLibrary1.pdb</pdbFile>
<instrumentInPlace type="System.Boolean">True</instrumentInPlace>
<outputDirectory type="System.String" />
</element>
<element type="Microsoft.VisualStudio.TestTools.Common.CodeCoverageItem">
<binaryFile type="System.String">bin\Debug\ClassLibrary2.dll</binaryFile>
<keyFile type="System.String">Library2.snk</keyFile>
<pdbFile type="System.String">bin\Debug\ClassLibrary2.pdb</pdbFile>
<instrumentInPlace type="System.Boolean">False</instrumentInPlace>
<outputDirectory type="System.String" />
</element>
Siehe auch
Aufgaben
Gewusst wie: Bearbeiten einer Testlaufkonfigurationsdatei
Konzepte
Instrumentieren und erneutes Signieren von Assemblys