Thomas Bandt

Über mich | Kontakt | Archiv

"Word to Code" - kleiner TDD-Helper

Vor etwas über einem Monat habe ich meinen ganz eigenen aktuellen "test driven way" vorgestellt. Inzwischen ist die im Screenshot des Testrunners dargestellte Zahl der Tests auf an die 300 gewachsen. Eine nette Zahl, doch ich bin mir sicher bei Abschluss des Projektes (Release) wird sie gut 4-stellig sein.

Eine müßige Angelegenheit, mag man meinen - wenn man sich vorstellt, dass man jeden Test einzeln im vorgestellten Format von Hand tippt:

   1:   
   2:  [TestFixture]
   3:  [Category("Blubr.Domain.Model.User")]
   4:  public class Wenn_die_Methode_ToSalutation_aufgerufen_wird : ConcernOf
   5:  {
   6:   
   7:      public override void Setup()
   8:      {
   9:      }
  10:   
  11:      [Test]
  12:      public void Ist_das_Ergebnis_Dear_Mr_X_wenn_der_User_ein_Mann_ist()
  13:      {
  14:          throw new NotImplementedException();
  15:      }
  16:   
  17:      [Test]
  18:      public void Ist_das_Ergebnis_Dear_Mrs_X_wenn_der_User_eine_Frau_ist()
  19:      {
  20:          throw new NotImplementedException();
  21:      }
  22:   
  23:  }

Und zugegeben, ja es ist schon ziemlich nervig und vor allem zeitraubend. Vor allem, weil ich mir angewöhnt habe die "Spezifikation" in Word (vorher Notepad) vorzuschreiben, einfach um sie komplett und ohne einengende Formatierungszwänge (Unterstriche usw.) ausformulieren zu können. Anschließend habe ich den Text dann immer in Visual Studio kopiert und von Hand in eine Testklasse samt Methoden verwandelt.

Neulich habe ich dann in einer Twitter-Diskussion mal laut nachgedacht und gemeint, es müsste doch ein Tool geben, was diese Arbeit automatisch erledigt. Gefunden habe ich keins, aber innerhalb von ein paar Minuten selbst eines zusammengeklickt (im wahrsten Sinne des Wortes).

Herausgekommen ist eine kleine App namens "Word to Code Specifications Converter", die genau das Geforderte tut: sie wandelt den Word-Text nach einem vorgegebenen Format in Code in Form einer Test-Klasse um. Einfach die Spezifikation in Word schreiben, in das Tool kopieren, Button drücken und das Ergebnis ist fertig.

Schritt 1: Text aus Word reinkopieren

Schritt 2: In Test-Code konvertieren

Obwohl es ein Schnellschuss ist und natürlich absolut gruselig und nicht test-getrieben "programmiert" wurde, nutze ich es nun seit zwei Wochen und kann sagen: es funktioniert. Es hat sogar einen Platz in meiner Taskleiste gefunden.

Natürlich enthält es Bugs (Kommas werden z.B. nicht entfernt), aber vielleicht hilft es ja dem ein oder anderen auch bei der Arbeit, weshalb ich es nicht auf meiner Platte verrotten lassen möchte. Anbei also der vollständige Code und die ausführbare .exe.

(Wenn jemand was Vernünftiges draus machen will - nur zu.)

Downloads

Kommentare

  1. Christina schrieb am Freitag, 7. Mai 2010 18:32:00 Uhr:

    Hallo Thomas,

    das ist aber super nett von dir! Eine tolle Art die Tests zu definieren, die zum korrekten testgetriebenen Code führen.
  2. Lars schrieb am Freitag, 7. Mai 2010 19:29:00 Uhr:

    Hallo,

    kennst Du SpecFlow (http://www.specflow.org/) ? Das bietet ähnliches, generiert den Testcode aber direkt aus der Spezifikation und ermöglicht auch, verschiedene Testfälle (zB tabellarisch) mit in der Spezifikation aufzunehmen. Ein Blick lohnt sich, auch wenn SpecFlow eher aus der Ecke Acceptance Testing kommt.

    Lars
  3. Philip Proplesch schrieb am Freitag, 7. Mai 2010 19:34:00 Uhr:

    Klasse Idee :-)

    Inspiriert davon habe ich ein kleines T4-Template erstellt:
    http://philipproplesch.de/Files/WordToCode.rar
  4. Thomas schrieb am Freitag, 7. Mai 2010 19:41:00 Uhr:

    @Lars: Ja, habe ich mir mal oberflächlich angesehen. Gefällt mir aber nicht, da es nicht zu meiner Art Entwicklung (aktuell) passt bzw. ich keine Lust hatte mich in das Schema pressen zu lassen.
  5. Thomas schrieb am Samstag, 8. Mai 2010 13:46:00 Uhr:

    @Phillip: Gibt es zu deinem T4-Template auch ne readme.txt zur Installation für Leute, die sich damit nicht auskennen? ;-)
  6. Philip schrieb am Samstag, 8. Mai 2010 14:58:00 Uhr:

    Ich wusste das ich was vergessen habe :-)
    ---
    Einfach beide Dateien in ein Projekt kopieren und in der Datei "WordToUnitTest.tt" die Variable "filePath" (Zeile 11) auf ein *.docx-Dokument zeigen lassen. Die Änderung speichern... das wars :-)

    Die Klassen sollten nun unterhalb des Templates auftauchen.
  7. Robert Mischke schrieb am Montag, 10. Mai 2010 22:01:00 Uhr:

    Ein Github-Projekt dazu wäre schön :-)
  8. Philip schrieb am Donnerstag, 13. Mai 2010 13:59:00 Uhr:

    Die Idee mit dem T4-Template wurde verworfen, dafür gibt es nun ein Custom Tool für´s Visual Studio 2010 :-)

    http://github.com/philipproplesch/Docx2UnitTest/

    Über Feedback würde ich mich freuen.

    Philip
  9. Thomas schrieb am Freitag, 14. Mai 2010 13:13:00 Uhr:

    fyi, mein Feedback:

    http://blog.thomasbandt.de/39/2338/de/blog/docx-2-unittest.html

    :-)


« Zurück  |  Weiter »