wäre Es ist nicht klar, ob Sie für eine Methode oder eine bestimmte Technologie suchen Ihre Tests zu verwenden.
Soweit es die Methodik geht, möchten Sie vielleicht keine umfangreichen Komponententests durchführen. Vielleicht wäre ein besserer Ansatz, einige Programme in Ihre domänenspezifische Sprache zu schreiben und dann die Opcodes auszuführen, um ein Ergebnis zu erzeugen. Die Testprogramme würden dann dieses Ergebnis überprüfen. Auf diese Weise können Sie eine Menge Code ausführen, aber am Ende nur ein Ergebnis prüfen. Beginnen Sie mit einfachen, um offensichtliche Bugs auszuspülen und zu härteren zu bewegen. Anstatt die erzeugten Opcodes jedes Mal zu überprüfen.
Ein anderer Ansatz besteht darin, automatisch Programme in Ihrer domänenspezifischen Sprache zusammen mit den erwarteten Opcodes zu generieren. Dies kann sehr einfach sein, wie ein Perl-Skript zu schreiben, die eine Reihe von Programmen wie produziert:
Satz lcl_var = 2
Satz lcl_var = 3
Sobald Sie haben eine Reihe von Testprogrammen in Ihrer Sprache, die Haben Sie eine korrekte Ausgabe, können Sie rückwärts gehen und Unit-Tests generieren, die jeden Opcode prüfen. Da Sie die Opcodes bereits haben, wird es darum gehen, die Ausgabe des Parsers auf Korrektheit zu überprüfen; Überprüfung seines Codes.
Während ich cppunit nicht verwendet habe, habe ich ein In-House-Tool verwendet, das sehr wie cppunit war. Es war einfach, Komponententests mit cppunit zu implementieren.
Harte Codierung ist am besten, der Komponententest sollte Ihnen sehr genau sagen, wo der Fehler in der Codebasis ist. Wenn es generisch ist, könnte der Fehler in der "Liste der gültigen Codes" und nicht im Parser stehen. – Paxic