Dies ist eine Fortsetzung dieser Frage. Dort habe ich gefragt, wie man Unit-Tests durchführt, wenn man eine Bibliothek wissenschaftlicher Algorithmen hat. Ich habe jetzt ein ähnliches Problem, aber mit einem anderen Projekt.
Ich arbeite an einer 3D-Grafik-Engine-Framework-Abstraktion für DirectX, OpenGl, WebGl, Silverlight, WPF und im Grunde genommen an der 3D-API unter C # namens Rendering .NET . Das Szenario ist das folgende: Das Projekt wird von einem kleinen Team von Kollegen entwickelt, die alle im selben Büro arbeiten. Wir sind alle Informatiker, nicht viel in der Software-Engineering-Community und -Praktiken. Es fiel mir sogar schwer, zu überzeugen, von Subversion zu Git zu wechseln und das Projekt auf Codeplex zu veröffentlichen. Das Projekt wird immer umfangreicher (ca. 80.000 Zeilen C #) und deckt jetzt den größten Teil von DirectX und OpenGl bis Shader Model 5.0 ab. Es handelt sich also nicht um ein Ein-Mann-Projekt wie das in der verknüpften Frage beschriebene. Wir möchten auch die Open Source-Community zur Zusammenarbeit ermutigen.
Bisher haben wir getestet, indem wir kleine Anwendungen geschrieben haben, bei denen alle Geräte und Ressourcen initialisiert, eine Szene eingerichtet und gezeichnet wurden. Die Sache ist, ich weiß nicht, wie ich es anders machen soll, ich meine, wie man kleine Testfälle entwirft, die bestimmte Merkmale des Frameworks wie Ressourcenzuweisung, primitive Tessellation, Shader-Kompilierung usw. testen, ohne das neu erstellen zu müssen gesamte Motorinitialisierung. In einigen dieser Fälle kann ich mir nützliche Verspottungen vorstellen, aber wie kann ich im Allgemeinen die Richtigkeit eines Rendering-Algorithmus testen, wenn die Ausgabe visuell ist (ein Bild oder eine animierte Szene)? Im Moment ist es am klügsten, dieselbe Szene mit einem Software-Renderer, DirectX und OpenGl, zu rendern und sie Pixel für Pixel zu vergleichen.
Was ist hier der "richtige" Testansatz?