Gewusst wie: Festlegen von Zeitlimits für die Ausführung von Tests
Sie können Zeitlimits für die Ausführung eines Tests oder Testlaufs angeben. Dies ist z. B. erforderlich, wenn Sie in einer Testabteilung arbeiten und ein Testlauf zu einer bestimmten Tageszeit abgeschlossen sein muss.
Ein anderes Szenario für die Verwendung von Zeitlimits betrifft nicht reagierenden Code. Wenn bei einem Test ein nicht reagierender Codeabschnitt gefunden wird und Sie ein Test-Timeout verwenden, wird der entsprechende Test durch das Testlauf-Timeout beendet, sodass der Testlauf mit nachfolgenden Tests fortgesetzt werden kann.
Es gibt zwei Möglichkeiten, Zeitlimits festzulegen:
Die Timeoutwerte für Tests und Testläufe werden in den Testeinstellungen festgelegt. Weitere Informationen zu Testeinstellungen finden Sie unter Erstellen von Testeinstellungen zum Ausführen von automatisierten Tests in Visual Studio.
Sie können den Timeoutwert für einzelne Tests überschreiben, indem Sie eine Eigenschaft für einen einzelnen Test festlegen. Der Testlauf-Timeoutwert kann nicht überschrieben werden.
Sie können keine Test-Timeouts für bestimmte Testtypen festlegen. Test-Timeouts gelten nicht für manuelle Tests, doch Testlauf-Timeouts sind immer wirksam, auch bei Testläufen, die manuelle Tests enthalten.
Das Festlegen von Zeitlimits für Tests und Testläufe hat folgende Auswirkungen:
Wenn die Dauer eines Testlaufs den Timeoutwert erreicht, wird der Testlauf abgebrochen, auch wenn einige Tests noch nicht ausgeführt wurden.
Wenn die Dauer eines einzelnen Tests den Timeoutwert erreicht, wird die Ausführung dieses Tests beendet, und der Test wird mit Timeout gekennzeichnet. Der Testlauf wird mit dem nachfolgenden Test fortgesetzt.
Einfluss von Initialisierungsmethoden auf Test-Timeouts
Ein Testlauf kann eine AssemblyInitializeAttribute-Methode und eine ClassInitializeAttribute-Methode beinhalten. Wenn diese Methoden definiert sind, dauert deren Ausführung eine bestimmte Zeit, und anschließend wird der erste Test im Testlauf gestartet.
Die für die Initialisierungsmethoden benötigte Zeit wird zu der Zeit hinzuaddiert, die für den ersten Test aufgewendet wird. Dies kann als Formel mit folgenden Begriffen ausgedrückt werden:
Dt = Gesamtdauer
Dr = Ausführungsdauer eines Tests
I = Initialisierungsmethoden für die Assembly und die Klasse
Tn = Test, der an einer zufälligen Position in einem Testlauf ausgeführt wird
T1 = Test, der an der ersten Position in einem Testlauf ausgeführt wird
Folgendes gilt für alle Tests nach dem ersten Test:
Dt**[Tn] = Dr[Tn]**
Beachten Sie jedoch folgenden Fall:
Dt**[T1] = Dr[T1] + D[I]**
Dem ersten ausgeführten Test wurde möglicherweise ein Timeoutwert für einzelne Tests zugewiesen. In diesem Fall wird die Initialisierungszeit auf das Zeitlimit angerechnet, das für den ersten Test festgelegt wurde. Dies kann dazu führen, dass der Test fehlschlägt.
Tipp
Diese Einschränkung könnte nur bewirken, dass der erste Test fehlschlägt. Nachfolgende Tests im Testlauf sind nicht betroffen.
Wenn der Testlauf Initialisierungsmethoden enthält, könnten Sie diese Einschränkung auf folgende Weise umgehen: Wenden Sie auf jeden Test ein Timeout an, das länger als die gesamten erwarteten Ausführungszeiten für Testmethode und Initialisierungsmethoden ist. Dieser Schritt müsste für jeden Test ausgeführt werden. Da die Ausführungsreihenfolge der Tests bei Komponententests nicht vorgegeben ist, kann nicht vorhergesagt werden, welcher Test zuerst ausgeführt wird.
Einfluss von Bereinigungsmethoden auf Testlauf-Timeouts
Ein Testlauf kann eine AssemblyCleanupAttribute-Methode und eine ClassCleanupAttribute-Methode beinhalten. Nachdem diese Methoden abgeschlossen wurden, endet der Testlauf.
Möglicherweise wurde dem Testlauf ein Timeoutwert zugewiesen. Die von den Bereinigungsmethoden benötigte Zeit wird der Gesamtzeit hinzuaddiert, die für den Testlauf aufgewendet wird. Dies bedeutet, dass die Bereinigungszeit auf das Zeitlimit angerechnet wird, das Sie für die gesamte Testlaufausführung festgelegt haben. Dies kann dazu führen, dass der Testlauf ein Timeout verursacht.
So legen Sie einen Testlauf-Timeoutwert fest
Öffnen Sie den Projektmappen-Explorer.
Doppelklicken Sie im Ordner Projektmappenelemente der Projektmappe auf die Datei mit den Testeinstellungen.
Das Dialogfeld Konfigurationseinstellungen wird geöffnet.
Klicken Sie auf Test-Timeouts.
Aktivieren Sie Testlauf abbrechen, wenn die Gesamtausführungszeit folgenden Wert überschreitet:
Geben Sie den Testlauf-Timeoutwert in Stunden, Minuten und Sekunden an.
Klicken Sie auf Speichern und dann auf Schließen.
Damit diese Einstellung wirksam wird, müssen die bearbeiteten Testeinstellungen die aktiven Testeinstellungen sein. Weitere Informationen finden Sie unter Gewusst wie: Anwenden von Testeinstellungen aus Microsoft Visual Studio.
So legen Sie das Timeout für einzelne Tests mithilfe der Testeinstellungen fest
Öffnen Sie den Projektmappen-Explorer.
Doppelklicken Sie im Ordner Projektmappenelemente der Projektmappe auf die Datei mit den Testeinstellungen.
Das Dialogfeld Testeinstellungen wird angezeigt.
Klicken Sie auf Test-Timeouts.
Aktivieren Sie Einzelnen Test als fehlerhaft kennzeichnen, wenn die Ausführungszeit folgenden Wert überschreitet:
Geben Sie den Timeoutwert für einzelne Tests in Stunden, Minuten und Sekunden an.
Klicken Sie auf Speichern und dann auf Schließen.
Damit diese Einstellung wirksam wird, müssen die bearbeiteten Testeinstellungen die aktiven Testeinstellungen sein. Weitere Informationen finden Sie unter Gewusst wie: Anwenden von Testeinstellungen aus Microsoft Visual Studio.
So legen Sie das Timeout für einzelne Tests über eine Testeigenschaft fest
Öffnen Sie den Testlisten-Editor oder das Fenster Testansicht.
Klicken Sie auf den Test, und drücken Sie dann F4.
Das Eigenschaftenfenster wird geöffnet, und es werden die Eigenschaften für diesen Test angezeigt.
Geben Sie für die Timeout-Eigenschaft den Wert in Stunden, Minuten und Sekunden an.
Tipp
Der Timeoutwert für einen manuellen Test ist Unendlich. Dieser Wert kann nicht geändert werden.
Der angegebene Wert überschreibt den in den Testeinstellungen festgelegten Timeoutwert nur für diesen Test. Dies hat keine Auswirkungen auf den Testlauf-Timeoutwert.
So legen Sie das Timeout für einzelne Tests mithilfe eines Komponententestattributs fest
Öffnen Sie die Quellcodedatei eines Komponententests.
Suchen Sie das TestMethod-Attribut des Tests.
Fügen Sie das Timeout-Attribut und einen Parameter hinzu, der den Timeoutwert ausdrückt.
Der Timeoutwert wird in Millisekunden ausgedrückt.
Beispiel (Visual C#):
[TestMethod(), Timeout(80)] public void MyTestMethod() { // test code }
Beispiel (Microsoft Visual Basic):
<TestMethod(), Timeout(80)> _ Public Sub MyTestMethod() ' test code End Sub
Der angegebene Wert überschreibt den in den Testeinstellungen festgelegten Timeoutwert nur für diesen Test. Dies hat keine Auswirkungen auf den Testlauf-Timeoutwert.
Siehe auch
Aufgaben
Gewusst wie: Anwenden von Testeinstellungen aus Microsoft Visual Studio