Ich habe ein paar Testdateien in meinem DSL in meinem Test Plugin/Projekt geschrieben. Die meisten Tests verwenden mehrzeilige Inline-Strings und Xtend, aber in vier Fällen muss ich Code testen, der mit URLs und dem Classpath eine magische Wirkung entfaltet. Daher benötige ich wirklich Ressourcen im Klassenpfad.Wie deaktiviere ich die Code-Generierung in meinem Test-Plugin?
Da das Laden der Ressourcen funktioniert nur, wenn die Erweiterung korrekt ist, kann ich den Dateien keine gefälschte Erweiterung geben.
Jetzt mein Problem: Mein DSL hat auch einen Code-Generator. Dies führt dazu, dass ich am Ende einige generierte Dateien an Orten erhalte, an denen ich sie nicht haben kann (sie kompilieren zum Beispiel nicht und enthalten sogar einen Fehler, um die Fehlerbehandlung zu testen, wenn Informationen über mehrere Dateien verteilt werden)).
Ich kann die Xtext-Natur nicht deaktivieren, da das Testprojekt Xtend verwendet, also brauche ich für diese Dateien Code-Generierung.
Da der Generator in Eclipse läuft (ich habe die DSL-Plugins für andere Projekte installiert), gibt es keine Möglichkeit, den Code-Generator in Guice zu überschreiben.
Wie kann ich den Codegenerator in diesem Fall deaktivieren?
Ihre Einrichtung ist sehr komplex, und es ist ein bisschen schwer zu verstehen, was Sie wirklich versuchen zu erreichen ... Sind diese „Testdateien geschrieben in meine DSL "tatsächlichen JUnit Tests, oder enthalten sie Daten zum Testen? Versuchen Sie Unit-Tests oder Integrationstests durchzuführen? Welchen Teil des Systems testen Sie - den Code-Generierungsteil oder die Sachen, die zuerst generiert werden müssen? Warum können Sie die Ressourcen nicht verspotten oder den entsprechenden Testcode zusammen mit den anderen Dateien generieren? – weltraumpirat
Meine Testdateien sind Daten, die bei Tests verwendet werden. Ich bin mir nicht sicher, ob es in diesem Fall UTs oder ITs sind - spielt es eine Rolle? Ich teste meinen eigenen Code-Generator, Xtext's CG funktioniert. Ich erklärte, warum ich die Ressourcen nicht verspotten kann: Sie müssen auf dem Klassenpfad sein. Ich überlege, den Testfall zu ändern, um die Ressource in den bin/Ordner zu kopieren, aber ich fragte mich, ob das der beste Ansatz ist. –
Der Unterschied zwischen UT und IT wäre, dass ich in einem Komponententest immer versuchen würde, einen Weg zu finden, * alle * Abhängigkeiten nachzuahmen, während der ganze Punkt der Integrationstests darin besteht, zu sehen, ob alle Teile zusammenpassen ... In Ihrem Fall würde ich zuerst Unit-Test sagen und dann sehen, ob noch tote Punkte in Ihrer Testabdeckung vorhanden sind. Woher bekommst du die Klassenpfaddetails? Es muss einen Aufruf geben, durch den der Generator Zugang zu diesen erhält, also ist das die Abhängigkeit, die Sie verspotten sollten (d. H. Falsche Klassenpfadeinträge zurückgeben und die "Magie" gegen diese verifizieren). – weltraumpirat