2012-07-02 3 views
8

Hinweis: Ich verwende TestDriven.NET 3.0.2749 und NUnit 2.6.0.12051 für dieses Projekt.Führen Sie alle Tests in einer Testklasse mit TestDriven.NET und NUnit

Ich habe sowohl TestDriven.NET als auch NUnit installiert und versuche, TestDriven.NET über das Rechtsklick-Kontextmenü dazu zu bringen, alle Tests in einer Testklasse auszuführen.

Von der TestDriven.NET Dokumentation:

Wenn das Code-Editor-Fenster ausgewählt ist, wird der Test (s) zur Ausführung durch die Position des Cursors bestimmt werden; einzelne Tests werden ausgeführt, indem Sie mit der rechten Maustaste irgendwo in eine Testmethode klicken und "Test (e) ausführen" auswählen, wie in Abbildung 2 gezeigt; Alle Tests in einem Testgerät werden ausgeführt, indem Sie mit der rechten Maustaste in eine Klasse klicken (aber außerhalb jeder Methode) und "Test (s) ausführen" auswählen; Alle Tests in einem Namespace werden ausgeführt, indem Sie mit der rechten Maustaste in einen Namespace klicken und "Test (e) ausführen" auswählen.

Ich kann erfolgreich eine bestimmte Testmethode mit der rechten Maustaste im Kontextmenü und das NUnit GUI Läufer erfolgreich alle Tests für eine bestimmte Klasse laufen, aber ich möchte laufen die einen schnellen Zugriff TestDriven.NET sieht verwenden diese Aufgaben, während ich mich entwickle.

Ich erhalte die Folgefehler, wenn ich die Cursor außerhalb der Testmethode:

Der Zieltyp enthält keine Tests von einem bekannten Test-Framework oder einer ‚Main‘ Methode.

Aktualisiert 1: Beispielcode hinzugefügt.

Beispiel-Code zu testen:

namespace TDDN.Framework 
{ 
    public class ExampleClass 
    { 
     public ExampleClass() { } 

     public Int32 Add(Int32 x, Int32 y) 
     { 
      return x + y; 
     } 

     public Int32 Subtract(Int32 x, Int32 y) 
     { 
      return x - y; 
     } 
    } 
} 

Unit-Tests:

using NUnit.Framework; 
using TDDN.Framework; 

namespace TDDN.UnitTests 
{ 
    [TestFixture] // Cursor caret placed here results in error above. 
    public class ExampleClassTests 
    { 
     [Test] // Cursor caret placed here works. 
     public void Add_SumTwoIntegers_SumReturned() 
     { 
      ExampleClass exampleClass = new ExampleClass(); 

      Assert.AreEqual(10, exampleClass.Add(5, 5)); 
     } 

     [Test] // Cursor caret placed here works also. 
     public void Subtract_SubtractTwoIntegers_DifferenceReturned() 
     { 
      ExampleClass exampleClass = new ExampleClass(); 

      Assert.AreEqual(5, exampleClass.Subtract(10, 5)); 
     } 
    } 
} 
+0

Bitte poste deinen Code, weil er funktionieren soll ... Vielleicht stimmt etwas mit deinen verwendeten Attributen nicht. – seldary

Antwort

16

ich genau dieses Problem nur auf, wenn die gleichen Versionen von TestDriven.NET und NUnit mit (3.0.2749 und 2.6 .0.12051).

Das Problem ist, dass TestDriven.NET 3.0 NUnit 2.6 nicht unterstützt, so dass es die NUnit [Test] und [TestFixture] Attribute nicht erkennen wird. TestDriven.NET wird also weiterhin Ihre individuellen Testfunktionen ausführen, jedoch als Ad-Hoc (wie am Ende der Pass/Fail/Skip-Meldung beim Test angezeigt).

Ich konnte das Problem lösen, indem ich eine neuere Version von TestDriven.NET (3.3 Beta 2) installierte, die NUnit 2.6 vollständig unterstützt (Siehe: https://groups.google.com/d/msg/nunit-discuss/pTCDx2_L8jU/TlpULzE36wEJ) Jetzt sollten Sie in der Lage sein, alle Tests im Fixture bei auszuführen einmal und sehen (NUnit 2.6.0) am Ende der Testausgabe angezeigt.

+0

Ich kann bestätigen, dass Ihre vorgeschlagene Lösung auch für mich funktioniert. Ich habe TestDriven.NET 3.4.2784 Beta installiert und konnte alle Tests ausführen, wenn der Cursor-Cursor wie erwartet in der Zeile "[TestFixture]" platziert wurde. Danke, Kristian. – Noren

0

Ich hatte genau die gleiche Fehlermeldung und ähnliches Verhalten auf den Caret-Platzierungen.

Ich hatte bereits die neueste Version von TestDriven.Net.

Mein Problem war, dass meine neue TestClass keine Kategorie angegeben hatte und es herausgefiltert wurde (Extras -> TestDriven.Net -> Allgemein -> Kategorien -> Tests in Kategorien einbeziehen).

Also nur die richtige Kategorie festgelegt mein Problem behoben.

Es war die gleiche Fehlermeldung, aber ein anderes Problem und eine andere Lösung.

Verwandte Themen