Frage

Ich habe eine Menge von Tests für ein Stück Software geschrieben habe (das ist eine große Sache ist), aber es wurde im Wesentlichen als eigenständigen Test in C # gebaut. Während dies gut genug funktioniert, leidet es an einigen Unzulänglichkeiten, nicht zuletzt von denen ist, dass es keinen Standard-Test-Framework und endet wird mit der Person erfordert die Durchführung des Tests Anrufe Tests zu kommentieren, die nicht ausgeführt werden soll, (wenn es nicht erwünscht ist, die gesamte Test ‚Suite‘ auszuführen). Ich möchte es in meinen automatisierten Testprozess integrieren.

sah ich, dass die Test-Ausgabe von VS 2008 den Begriff des ‚Generic Tests‘ hat, der könnte das tun, was ich will, aber wir sind nicht in der Lage, das Geld für diese Version zur Zeit zu verbringen. Ich begann vor kurzem der VS 2008 Pro-Version.

Diese Testverfahren folgen einem bekannten Muster:

  • Sie einige Setup für den Test.
  • Führen Sie den Test.
  • für den nächsten Test zurück.

Jeder von ihnen gibt einen bool (Pass / Fail) und einen String ref zu einem fehler Grund ausgefüllt, wenn es fehlschlägt.

Auf der hellen Seite, zumindest sind die Testmethoden konsistent.

Ich sitze hier heute Abend den Ansatz der Betrachtung könnte ich morgen früh nehmen all diesen Test-Code zu einem Test-Framework zu migrieren und, ehrlich gesagt, ich bin gar nicht so begeistert von der Idee brütete über 8-9K Linien von Testcode von Hand um die Konvertierung zu tun.

Haben Sie keine Erfahrung hatten Unternehmen eine solche Umwandlung? Haben Sie irgendwelche Tipps? Ich glaube, ich könnte durch alles tun globale Suche stecken slogging / ersetzt und von Hand Änderung der Tests.

Alle Gedanken?

War es hilfreich?

Lösung

Wenn Sie NUnit verwenden (die Sie sollten), müssen Sie eine neue Testmethode für jeden Ihrer aktuellen Testmethoden erstellen. NUnit verwendet Reflektion die Testklasse für Methoden mit dem [Test] Attribute gekennzeichnet abzufragen, das ist, wie es seine Liste der Tests erstellt, die in der Benutzeroberfläche angezeigt, und die Testklassen verwenden, um die NUnit Assert Methode, um anzuzeigen, ob sie bestanden haben oder fehlgeschlagen.

Es scheint mir, dass, wenn Ihre Testmethoden wie konsistent sind, wie Sie sagen, alle diese NUnit Methoden etwas wie folgt aussehen:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

Sobald Sie, dass an der Arbeit, der nächste Schritt ist es, ein Programm zu schreiben, die Reflexion nutzt alle Testmethodennamen auf dem alten Test-Klasse zu erhalten und erzeugt eine CS-Datei, die eine NUnit Methode für jedes Ihrer Original hat Prüfverfahren.

Annoying, vielleicht, aber nicht extrem schmerzhaft. Und Sie brauchen nur einmal zu tun.

Andere Tipps

Sie sind im durch das Idiom zu leben „Vorbeugen ist ein Pfund Heilung“. Sein vor allem in der Programmierung.

Sie machen keine Erwähnung von NUnit (was ich denke, von Microsoft für das Jahr 2008 gekauft wurde, aber halten Sie mich nicht, dass). Gibt es einen paticular Grund nicht nur NUnit in erster Linie verwendet hat?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top