Hallo,
möchte nochmal zum Thema Unit-Tests zu sprechen kommen, ganz allgemein und Programmiersprachen unabhängig. Im speziellen Fall geht es aber um C++ und CPPUNIT.
Vielleicht könnt ihr mir eure Gedanken dazu kurz erläutern.
Was sind Unit-Tests:
Es geht darum Klassen und Funktionen auf deren korrekte Funktion zu testen. Also return-Werte, übergebene&veränderte Referenzen per Argument oder eben "heimliche" Funktionsweise (bool CreateFile(string name), wurde die Datei wirklich erstellt?).
Wie testen:
Mein Betreuer hier im Praxisforum hatte vorgeschlagen, auch die internen Zustände (private Variablen) zu testen, ich bin aber der Meinung, die Funktionsweise zu testen macht keinen Sinn, sondern es kommt lediglich auf das Ergebnis drauf an. Was wenn sich die Implementierung ändert, nicht aber die Schnittstelle? Der Unit-Test würde dann fehlschlagen, obwohl das Ergebnis immernoch korrekt, aber anders verarbeitet wird.
Ich soll aber eigentlich trotzdem auch private Methoden testen etc.
Aber wie beschrieben, für mich ergibt das keinen Sinn. Für euch?
Edit: Die Schwierigkeit die mich plagt ist auch, wie teste ich Methoden ohne andere Methoden zu verwenden?
möchte nochmal zum Thema Unit-Tests zu sprechen kommen, ganz allgemein und Programmiersprachen unabhängig. Im speziellen Fall geht es aber um C++ und CPPUNIT.
Vielleicht könnt ihr mir eure Gedanken dazu kurz erläutern.
Was sind Unit-Tests:
Es geht darum Klassen und Funktionen auf deren korrekte Funktion zu testen. Also return-Werte, übergebene&veränderte Referenzen per Argument oder eben "heimliche" Funktionsweise (bool CreateFile(string name), wurde die Datei wirklich erstellt?).
Wie testen:
Mein Betreuer hier im Praxisforum hatte vorgeschlagen, auch die internen Zustände (private Variablen) zu testen, ich bin aber der Meinung, die Funktionsweise zu testen macht keinen Sinn, sondern es kommt lediglich auf das Ergebnis drauf an. Was wenn sich die Implementierung ändert, nicht aber die Schnittstelle? Der Unit-Test würde dann fehlschlagen, obwohl das Ergebnis immernoch korrekt, aber anders verarbeitet wird.
Ich soll aber eigentlich trotzdem auch private Methoden testen etc.
Aber wie beschrieben, für mich ergibt das keinen Sinn. Für euch?
Edit: Die Schwierigkeit die mich plagt ist auch, wie teste ich Methoden ohne andere Methoden zu verwenden?
Kommentar