Mein aktueller Arbeitgeber führt keine Unit-Tests durch (Schauder). Tatsächlich gibt es überhaupt keine hostbasierten Tests; alles ist getestet (black box) auf ziel. Und nichts davon kann automatisiert werden (das Grauen! das Grauen!).
Nach einigem Nörgeln wurde mir sehr widerwillig die Erlaubnis erteilt, Host-Tests zu untersuchen - zunächst auf Subsystemebene. Nicht ideal, aber es ist ein Anfang, und es kann für Schweinswale für Regressionstests automatisiert werden, und wenn es funktioniert, kann ich vielleicht sogar Unit-Tests ausprobieren.
Das Build-System für das Ziel hat nichts so Einfaches wie eine Make-Datei, oh nein, in der Tat. Es verfügt über ein Bash-Skript, das ein Perl-Skript ausführt, das einige Python-Skripte aufruft, die XML-Dateien verwenden, um Build-Befehle im laufenden Betrieb zu generieren.
Davon möchte ich mich fernhalten (vielleicht im nächsten Land, vielleicht sogar im nächsten Job).
Das Subsystem verfügt über mehr als 200 .CPP-Dateien. Weder die Quelle noch der Header enthalten die .H-Dateien, die sie benötigen, und verlassen sich lieber darauf, dass andere dies tun (das weitere Grauen! das weitere Grauen!). Meistens wird dies durch die treffend benannte enums.h (oder meine ich ungeschickt?) erledigt.
Frage : Ich suche nach einem Tool, das diese über 200 Quell- und zugehörigen Header-Dateien scannt und herausfindet, auf welche Klassen, Funktionen, Strukturen, Enumerationen usw Ich kann zum Testen erweitern?
Überlegt: Vielleicht könnte es einfach die Fehlermeldungen des Compilers/Linkers scannen, um festzustellen, was erstellt werden soll?
Windows oder Linux. Am liebsten kostenlos, aber da das so unwahrscheinlich ist, kann ich sie vielleicht dazu bringen, eine Lizenz zu bekommen , wenn es etwas Kommerzielles gibt, bei dem ich eine Demo ausprobieren kann .
Wichtig: Es muss der aktuelle Produktionscode unverändert verwendet werden können. Tools wie Google Mocks erfordern, dass ich Dinge als virtuell deklariere, nur um sie testen zu können.
[Update] Ich suche nach einer kostenlosen Lösung, die für die kommerzielle Nutzung lizenziert ist.
Nicht kostenlos oder sogar billig , aber Sie können vielleicht eine Demo-Lizenz bekommen, aber das klingt wie ein Job für LDRA TBRun &/oder LDRAunit - das Schöne ist, dass es Ihnen ziemlich schnell sagen wird, welche Stubs benötigt werden, und das Framework dafür generiert , sowohl auf Einheitenebene als auch auf Teilsystemebene.
Es ermöglicht auch Einheitentests auf der Zielhardware sowie auf einem Host und bietet eine sehr gründliche statische Analyse und Datenflussanalyse, die beide gute Verkaufsargumente für Ihren Chef sein könnten.
Ich habe es viel verwendet und für mich ist es viel weniger Arbeit, nützliche Tests zu erstellen, als viele der Konkurrenten, die ich auch verwendet habe.
(NB Nur zur Klarstellung, ich arbeite nicht für LDRA, aber ich benutze es bei der Arbeit)
Mateusz Kubuszok
PowerMockito
den Bytecode modifiziert, um einige normalerweise nicht erlaubte Aufgaben zuzulassen. C++ hat keine JVM und keine Reflektion, die Sie verwenden könnten, um mit Ihrer Idee davonzukommen. Falsche Objekte und Mock-Objekte sind Drop-in-Ersetzungen für tatsächliche Objekte - wenn Ihr Code so eng gekoppelt ist, dass Sie Implementierungen nicht austauschen können, wird Ihnen sowieso kein Framework helfen. In Ihrem Fallbuch könnte das effektive Arbeiten mit Legacy-Code von M. Feathers das sein, was Sie tatsächlich brauchen.Ira Baxter
Mawg sagt, Monica wieder einzusetzen