Unittests (Best practices)
Verfasst: Freitag 13. Februar 2009, 08:33
Hallo zusammen,
ich brauche mal wieder Anregungen bezüglich Unittests. Und zwar habe ich ein Package von sich untereinander importierenden Modulen. Für jedes Modul existiert ein Testmodul in der ich die TestCases definiere. Dann gibt es noch ein Modul 'runtests', in dem ich alle Testmodule importiere und in eine Suite einfüge, die dann ausgeführt wird.
Das hat bislang ganz gut funktioniert. Mit dem erstgenannten Package bin ich aber in Probleme gerannt, weil ich in den einzelnen Testmodulen Namen manipuliere um Funktionalitäten möglichst unabhängig von anderen Modulen testen zu können. Ein Beispiel: Der Testkandidat importiert ein Modul 'av3', welches z.B. Schnittstellen zur Programmkonfiguration ('config') und zur abgefragten Datenbank ('db') enthält. Um jetzt einfacher testen zu können, ersetze ich testkandidat.av3.config durch ein Mockobjekt. Wenn ich jetzt nicht höllisch aufpasse und diesen 'Patch' nach Ende der Tests (in diesem Modul) rückgängig mache, beeinflußt mir diese Änderung unter Umständen eines der späteren Testmodule. Und nicht immer ist es mit einem einfachen reload(av3) getan.
Was mich jetzt wiederum zum Nachdenken angeregt hat: Ist es wirklich so sinnvoll, importierte Module in der oben beschriebenen Weise zu manipulieren? Vielleicht ist mein Denkansatz ja völlig falsch? Ich finde im Netz leider wenig zu Best practices. Wie geht ihr in solchen Fällen vor?
Schönen Dank schon mal
Edit: Titel und Rechtschreibung
ich brauche mal wieder Anregungen bezüglich Unittests. Und zwar habe ich ein Package von sich untereinander importierenden Modulen. Für jedes Modul existiert ein Testmodul in der ich die TestCases definiere. Dann gibt es noch ein Modul 'runtests', in dem ich alle Testmodule importiere und in eine Suite einfüge, die dann ausgeführt wird.
Das hat bislang ganz gut funktioniert. Mit dem erstgenannten Package bin ich aber in Probleme gerannt, weil ich in den einzelnen Testmodulen Namen manipuliere um Funktionalitäten möglichst unabhängig von anderen Modulen testen zu können. Ein Beispiel: Der Testkandidat importiert ein Modul 'av3', welches z.B. Schnittstellen zur Programmkonfiguration ('config') und zur abgefragten Datenbank ('db') enthält. Um jetzt einfacher testen zu können, ersetze ich testkandidat.av3.config durch ein Mockobjekt. Wenn ich jetzt nicht höllisch aufpasse und diesen 'Patch' nach Ende der Tests (in diesem Modul) rückgängig mache, beeinflußt mir diese Änderung unter Umständen eines der späteren Testmodule. Und nicht immer ist es mit einem einfachen reload(av3) getan.
Was mich jetzt wiederum zum Nachdenken angeregt hat: Ist es wirklich so sinnvoll, importierte Module in der oben beschriebenen Weise zu manipulieren? Vielleicht ist mein Denkansatz ja völlig falsch? Ich finde im Netz leider wenig zu Best practices. Wie geht ihr in solchen Fällen vor?
Schönen Dank schon mal
Edit: Titel und Rechtschreibung