Unit Test: Testcode und Produktionscode in verschiedenen Projekten



  • Hallo,
    ich fange an mit Unit-Tests zu arbeiten. Meine Umgebung ist Visual Studio und GTest.
    Ich habe ein Projekt, dass getestet werden soll. Ich wollte fragen, wie Ihr bei so einem Test vorgeht? Mixt Ihr Testcode und Produktionscode in einem Projekt oder habt Ihr zwei Projekte, einmal das Projekt mit dem Produktcode selbst und einmal das ein Projekt in dem die Testcodes entahlten sind? Was ist gängige Praxis. Habe mal in ein par Github Repos reingeguckt. Da sieht es so aus als ob die Testcodes in einem Projekt, aber in separaten Verzeichnis sind.



  • @asd1 Ich habe die Unittests in einem eigenen Projekt, dass zu einer eigenständigen exe gebaut wird, aber in der selben Solution wie die eigentliche Anwendung.

    Ich würde empfehlen Testcode und Produktionscode nicht in einem Project zu mixen, das steigert nur die Chance reinen Testcode mit auszuliefern. Und, der Test soll ja den "Code under Test" so testen, als wenn er in Produktion wäre.


  • Mod

    @asd1 sagte in Unit Test: Testcode und Produktionscode in verschiedenen Projekten:

    Da sieht es so aus als ob die Testcodes in einem Projekt, aber in separaten Verzeichnis sind.

    So mach ich das. Die stärksten Argumente dafür sind aber bloß, dass die anderen Lösungen ein paar Nachteile haben:

    • Separates Projekt. Umständlich in Sync zu halten. Bei einem Projekt weiß man zu einem Stand immer genau, dass die Tests auch dazu passen. Finde ich einen wesentlichen Nachteil. Typisches Szenario: "Führ doch mal die Tests zu Branch Feature_XYZ vom 13. November aus!". Bei separatem Projekt stehst du dann wahrscheinlich dumm da oder betreibst viel Zusatzaufwand.
    • Tests mit im Codeverzeichnis. Unübersichtlich, da zu viel Inhalt im Codeverzeichnis, der nicht wirklich Code ist. Aber hier kann ich auch sehen, dass man es andersrum mögen kann, und eher die Nähe der Tests zum Code schätzt. Kann mit beidem leben, werde bei mir selber aber stets den separaten Ordner wählen
      • Kleiner Nachteil separate Ordner: Codestruktur und Teststruktur sollten in Sync gehalten werden. Sollte sich aber eigentlich auch nicht zu oft ändern.
    • Ganz was anderes: Was?

    @Schlangenmensch sagte in Unit Test: Testcode und Produktionscode in verschiedenen Projekten:

    Ich würde empfehlen Testcode und Produktionscode nicht in einem Project zu mixen, das steigert nur die Chance reinen Testcode mit auszuliefern.

    ??? Bekomm deinen Buildprozess in Griff!



  • OK. Danke für das Feedback. Ich werde es dann so machen, dass ich es in einem Projekt mache und ein separates Verzeichnis für die Tests erzeugt.
    Die Frage ist mir aufgekommen, weil VS ein eigenes GTest Projekt anbietet. Daraus würde ich implizieren, dass ich für Produktionscode und Testcode seperate Projekt habe.



  • @SeppJ Ich glaube, wir haben einfach einen unterschiedlichen Sprachgebrauch. Wenn ich von Projekt gesprochen habe, spreche ich von einem Visual Studio Projekt. Das ist kein unterschiedliches Git Repos oder sonst was. Wenn ich die Tests mit Stand vom 13.November ausführen will, checke ich den Stand aus und starte die Tests.

    Ich habe nur die Zuordnung Feature - Test nicht direkt durchs Buildsystem, sondern durch den Testcode. Aber ich rufe entweder eh die Tests spezfisch zu dem Code an dem ich grade arbeite auf, oder alle Tests.

    Nach wie vor bin ich der Meinung, dass es nicht hilfreich ist, in seinem VS Projekt "my_lib" auch nocht den Testcode zu "my_lib" zu haben.

    Aber wie gesagt, ich denke wir haben vor allem ein unterschiedliches Wording hier verwendet.


Log in to reply