Freigeben über


Gewusst wie: Bereitstellen von Dateien für Tests

Bevor Sie einen Test ausführen, müssen der Test und die Anwendung zu einem Speicherort, in dem sie ausgeführt werden können, zusammen mit anderen Assemblys kopiert werden, die darauf verweisen.Ein Test ist in der Regel auch zusätzliche Dateien wie Testdaten, Konfigurationsdateien, eine Datenbank und explizit geladene Assemblys.Um diese zusätzlichen Dateien bereitzustellen für den Test müssen Sie angeben, dass sie bereitgestellt werden.

Wenn werden Tests ausgeführt?

Visual Studio 2012 Tests kann an mehreren Stellen ausführen:

  • im Buildausgabeordner, in der Regel <your project>\bin\Debug.

  • In einem Bereitstellungsordner des lokalen Tests auf demselben Computer wie der Build.

  • Auf einem Remotecomputer. Remotebereitstellung wird verwendet, um verteiltes oder Webanwendungen und Anwendungen zu testen, die auf einer bestimmten Plattform ausgeführt werden müssen.Für Remotebereitstellung müssen Sie Testcontroller und Test-Agents installieren, und Sie führen in der Regel die Tests auf Lab-Umgebung.Weitere Informationen zur Remotebereitstellung finden Sie unter Gewusst wie: Ausführen eines Test-Controllern und Test-Agents.

Wie deaktiviere ich Testdateien für einen lokalen Test bereit?

Hier ist die beste Methode:

  1. Kopieren Sie die Dateien in dem Buildzielverzeichnis als Teil des Buildprozesses.

    • Wenn sie einem Testprojekt spezifisch sind, schließen Sie sie als Inhaltsdateien in Visual Studio-Testprojekt ein.Wählen Sie sie im Projektmappen-Explorer auswählen und die - Eigenschaft auf In Ausgabe kopierenKopieren, wenn neuer fest.

    • Andernfalls definieren Sie eine Postbuildaufgabe, die Dateien in das Buildausgabeverzeichnis zu kopieren.Beispiel:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Öffnen Sie die Projekteigenschaften des Testprojekts.In einem C#-Projekt öffnen Sie die Seite Buildereignisse.In einem Visual Basic-Projekt öffnen Sie die Seite Kompilieren und wählen Sie Buildereignisse aus.Fügen Sie den Kopierbefehl dem Feld Postbuildereignis hinzu.

  2. Verwenden Sie DeploymentItemAttribute für Testmethoden oder testen Sie Klassen, um die Dateien und Ordner anzugeben, die von Buildausgabeverzeichnis in den Bereitstellungsordner kopiert werden sollen.

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • Quelle ist eine zu kopierenden Datei oder ein Verzeichnis.Der Pfad kann oder relativ zum Buildausgabeverzeichnis absolut sein.

    • targetFolder ist optional.Es ist das Verzeichnis, in das der dann den Quelldateinamen oder Verzeichnisinhalt kopiert wird.Der Pfad kann oder relativ zum Bereitstellungsverzeichnis absolut sein.Der Standardwert ist ". ", das Bereitstellungsverzeichnis.

      HinweisHinweis

      targetFolder ist immer ein Verzeichnis, nie ein Dateipfad.Sie können den Namen der Datei ändern, indem Sie DeploymentItem-Attribut verwenden.

    Sie können das - Attribut so oft verwenden, während Sie möchten, und Sie können sie an den Testmethoden anwenden oder Klassen testen.

    Wenn Sie einen Satz von Tests auswählen, die ausgeführt wird, werden alle Elemente, die in ihren DeploymentItem-Attributen angegeben werden, bevor die Beginn kopiert.

  3. Erwägen Sie, die Komponententests direkt im Buildausgabeverzeichnis ausführen, sodass Tests schnell ausgeführt wird.Dies ist auf dem Buildserver besonders nützlich, nachdem Sie die Tests überprüft haben.

    Sie dazu, eine .runsettings Datei der Projektmappe, Include- <DeploymentEnabled>False</DeploymentEnabled> hinzufügen, und die Datei in Test, Menü Testeinstellungen auswählen.Derselbe Effekt tritt in einem Testlauf auf, in dem DeploymentItemAttribute überhaupt verwendet wird.

    jedoch, Sie können keinen, Bereitstellungsordner auf verwenden vermeiden erforderlich ist, wenn Sie eine .testsettings Datei verwenden, die für Internet und Auslastungstests, Tests der codierten UI, und jeder Test, in dem Sie eine Anwendung auf Remotecomputern bereitstellen.

Wann sollte ich eine .testsettings-Datei verwenden?

Sie benötigen keine .testsettings Datei für einfache Komponententests.Wenn Sie keine .testsettings-Datei benötigen, verwenden Sie kein.Sie können Komponententests langsamer ausgeführt werden, und sie ist mit Testframeworks von Drittanbietern nicht kompatibel.Betrachten Sie die anderen Methoden der Bereitstellung stattdessen.

Sie benötigen eine .testsettings-Datei, wenn alle Bedingungen zutreffen:

Wenn Sie eine .testsettings-Datei verwenden, werden die Anwendung und Testassemblys immer in einem Bereitstellungsordner kopiert.

Sie können Datendateien und Verzeichnisse auf der Seite des Bereitstellung .testsettings-Editors angeben.Sie werden im Bereitstellungsordner vor jedem Testlauf kopiert.Die Elementpfade, die auf dieser Seite angegeben werden, sind immer relativ zum Projektmappenverzeichnis und werden immer im Bereitstellungsordner neben der Anwendung und den Testassemblys bereitgestellt.

Wenn Sie absolute Pfade verwenden oder ein anderes Zielverzeichnis an, die .testsettings-Datei mit dem XML-Editor öffnen, und ein Fragment einfügen möchten, das diesem ähnelt:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory kann dem Bereitstellungsverzeichnis absolut oder relativ zu sein.

Wann wird ein separater Bereitstellungsordner verwendet?

Wenn Sie Tests ausführen, indem Sie Visual Studio verwenden, wird der Bereitstellungsordner unter TestResults im Projektmappenordner erstellt.

Ein separater Bereitstellungsordner wird ob eine der Testmethoden verwendet, oder Klassen in einem Testlauf hat das DeploymentItem-Attribut oder, wenn Sie eine .testsettings Datei verwenden.

Wenn ein Bereitstellungsordner verwendet wird, werden die folgenden Dateien und Ordner in den Bereitstellungsordner kopiert, bevor die Tests ausgeführt werden:

  • Die Testassembly

  • Alle abhängigen Assemblys

  • Dateien und Verzeichnisse, die Sie explizit, entweder angegeben haben, indem Sie DeploymentItemAttribute oder in einer Datei .testsettings verwendeten

Bereitstellungsordner für einen lokalen Testlauf

Lokaler Bereitstellungsordner für Tests

Wann werden Dateien bereitgestellt und in welcher Sequenz?

In einem Testlauf werden alle bereitzustellenden Dateien vor jeder Testanfang kopiert.Ein Testlauf ist ein Batch Tests, die durch einen einzelnen Befehl oder ein geplantes Ereignis initiiert werden.Dies bedeutet, dass, wenn Sie eine für an eine bestimmte Testmethode bereitgestellt werden, Datendatei, es auch für jeden anderen Test verfügbar ist, der in der gleichen Ausführung ausgeführt wird.

Die folgenden Elemente werden kopiert, in der angegebenen Reihenfolge.Elemente, die später kopiert werden, überschreiben die, die zuvor kopiert wurden, wenn sie denselben Namen haben.

  1. angegebene Elemente mithilfe von DeploymentItemAttribute

  2. Abhängigkeiten.Beispielsweise Anwendungskonfigurationsdateien und abhängige Assemblys.

  3. angegebene Elemente in einer .testsettings Datei, wenn Sie ein verwenden.

  4. Instrumentierte Binärdateien.Beispielsweise Assemblys, die instrumentiert wurden, um Code Abdeckung oder IntelliTrace zu aktivieren.

    Wenn Sie die direkte Instrumentation verwenden, werden Binärdateien zuerst instrumentiert und dann in den Bereitstellungsordner kopiert. Anderenfalls werden sie zuerst kopiert und danach instrumentiert.Direkte Instrumentation ist die Standardeinstellung für Tests, die lokal ausgeführt werden.

  5. Die Datei bzw. die Dateien, aus denen der Test besteht.Hierzu gehören Testassemblys für Komponententests, Text- oder MHT-Dateien für manuelle Tests oder andere Dateitypen für andere Testtypen, z. B. generische Tests.

Was ist im TestResults-Verzeichnis?

  • Testlaufordner.TestResults enthält einen Ordner für jeden Testlauf, der gestartet wurde.Ihr Name umfasst die Zeit, die es erstellt wurde.

    Wenn Sie Setup angeben und Testläufen ausgeführten Bereinigungsskripts in einem .testsettings Datei, enthält der Testlaufordner diese Skripts.

  • Handhaben.Jeder Testlaufordner enthält einen Ordner mit dem Namen Out.Der Ordner "Out" ist der eigentliche Bereitstellungsordner, dem Assemblys und andere Bereitstellungsdateien kopiert werden, wenn der Testlauf beginnt.

  • In.Codeabdeckungsergebnisse und andere Testergebnisse werden im Ordner gespeichert, der unter benannt ist.

Siehe auch

Referenz

DeploymentItemAttribute

Konzepte

Instrumentieren und erneutes Signieren von Assemblys

Weitere Ressourcen

Angeben von Testeinstellungen für Visual Studio-Tests