2012-03-28 10 views
0

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?

+0

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

+0

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. –

+0

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

Antwort

1

Es gibt eine einfache Möglichkeit, dies zu erreichen:

  1. Öffnen Sie die Eigenschaften des Projekts
  2. den Eintrag
  3. Select "Compiler"
  4. Wählen Sie „Enable projektspezifische Einstellungen für Ihren DSL erweitern "
  5. Deaktivieren/Abwählen" Compiler ist aktiviert "unter" Allgemein "

Wenn Sie nicht über eine Immobilien-Eintrag für Ihren DSL:

  1. dieses Fragment in Ihre .mwe2 Workflow-Datei:

    fragment = generator.GeneratorFragment {} 
    
  2. Regenerieren Ihre Projekte

  3. den neuen Code Merge von plugin.xml_gen in plugin.xml sowohl in der Basis und den UI-Plugins.

Die interessanten Teile sind die beiden Erweiterungspunkte org.eclipse.ui.preferencePages und org.eclipse.ui.propertyPages

+0

Bitte beachten Sie, dass bei Projekten, die von Grund auf neu erstellt werden, bereits alle diese Einstellungen angewendet wurden, so dass die mwe2-Datei nicht bearbeitet werden muss. –