Unit Tests sind kleine, sich selbst enthaltende Testmethoden, die unabhängig von anderen Methoden ausgeführt werden und sich nicht gegenseitig beeinflussen.
Folgende Regeln für unit tests sind zu beachten:
- Schreiben Sie mindestens einen Test für jede Methode.
- Schreiben Sie zunächst die Interface- und/oder stub-Methoden, dann die Tests. Vergewissern Sie sich, dass die Tests nicht bestanden werden (da der Code ja noch nicht geschrieben ist).
- Erst jetzt sollte das neue Feature implementiert werden mit dem Ziel, den Test zu bestehen.
- Wenn Sie nach einem Release einen Bug entdecken, beheben Sie ihn nicht einfach, sondern
- schreiben Sie zunächst einen Test, der den Fehler demonstriert,
- dann erst beseitigen Sie den Bug.
Unit tests erlauben Ihnen,
- Ihre Software auch in entfernten Umgebungen überprüfen zu können;
- beim Implementieren neuer Features nicht bereits bestehende zu kompromitieren;
- bereits behobene Bugs nicht wieder einzuführen;
- Zeit bei der Entwicklung einzusparen, da die Chancen fehlerhaften Code schnell zu erkennen, deutlich steigen;
- Code schreiben und testen in derselben Umgebung auszuführen;
- die Test-Abdeckung immer weiter zu erhöhen.
Unit Tests in Zope und Plone
Unit Tests im Zope-2/Plone-Kontext basieren meist auf ZopeTestCase, der das Python unittest-Modul verwendet. Dabei laufen die Unit Tests meistens in einer Sandbox (auch Test-Fixture genannt) ab.
PloneTestCase basiert auf ZopeTestCase, ist jedoch eher ein Integrationstest, der die Integration Ihrer und der zugrundeliegenden Komponenten wie ZODB und ZPublisher überprüft. PloneTestCase erstellt eine leere Zope-Instanz mit einer einzelnen Plone Site, einem Nutzer und dem Standard Mitglieder-Ordner. Ist der Test beendet, wird die Transaktion abgebrochen, so dass keine der durch den Test vorgenommenen Änderungen der Plone-Site erhalten bleibt.