2016-08-09 15 views
0

Ich bin derzeit damit beschäftigt, eine unserer Anwendungen von Eclipse 3.7 und 4.5 zu wechseln. Leider hatte niemand erwartet, wie vermasselt der neue Rahmen ist, weshalb die anderen Anwendungen vorerst bei 3,7 bleiben werden. Jetzt kommt der knifflige Teil: um den Bugfinder-Prozess zu beschleunigen, möchte ich unsere gängigen Plug-Ins gegen 4.5 testen (natürlich müssen sie aber noch gegen 3.7 testen).Ausführen von Integrationstests mit mehreren Zielplattformen

This thread schlägt vor, es könnte mit der Hilfe maven-invoker-plugin möglich sein, aber es ist 2 Jahre alt und dies ist ein wirklich häufiger Anwendungsfall, also könnte es jetzt etwas besser sein.

Ich kann nichts finden, wie man die maven-invoker-plugin mit Tycho arbeiten lässt. Und die tycho-surefire-plugin scheint keine Option zum Ändern der Zielplattform zu haben.

Nur für den Fall, ich spreche über dieses Zielplattform (das scheint nicht außerhalb der Dokumentation unterstützt/verwendet werden):

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <configuration> 
     <resolver>p2</resolver> 
     <target> 
      <artifact> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>org.acme.project</artifactId> 
       <version>${project.version}</version> 
       <classifier>platform</classifier> 
      </artifact> 
     </target> 
    </configuration> 
</plugin> 

So wie ich meine Integrationstests gegen mehrere Ziele testen Plattformen?

Antwort

0

Müssen Sie dies während eines einzelnen Builds tun, d. H. In einem einzigen Reaktor? Wenn nicht, können Sie einfach wechseln Zielplattformen basierend auf einer Systemeigenschaft zu Maven weitergegeben, beispielsweise durch eine Jenkins/Hudson matrix build:

<target> 
    <artifact> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>${targetPlatform}</artifactId> 
    <version>${project.version}</version> 
    <classifier>platform</classifier> 
    </artifact> 
</target> 

Denken Sie daran, einen Standard für Ihre targetPlatform Eigenschaft unter project/properties zu konfigurieren, so baut ohne -DtargetPlatform=... gesetzt wird wird nicht fehlschlagen.

(At Eclipse-Code Recommenders nutzen wir diese Einrichtung regelmäßig test against 6 different Eclipse releases zu.)

0

Ich fand auch eine Möglichkeit, die Tests im gleichen Reaktor ausgeführt werden.

Ich erstelle eine Kopie des Testfragments ohne alle Testklassen und fügte die E4-Zielplattform über target-platform-configuration hinzu. Dann habe ich diesen Code die Klassen und fragment.xml an das neue Modul zu kopieren:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.1</version> 
    <executions> 
     <execution> 
      <id>copy-classes</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/it-classes</outputDirectory> 
       <resources> 
        <resource> 
         <directory>../${original-test-project}/src</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
     <execution> 
      <id>copy-fragment</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/</outputDirectory> 
       <resources> 
        <resource> 
         <directory>../${original-test-project}/</directory> 
         <includes> 
          <include>fragment.xml</include> 
         </includes> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Schließlich werden die build.properties muss die Linie haben source.. = target/it-classes/, so dass der Maven Build können Sie die kopierten Klassen kompilieren und führe sie normal aus.

Verwandte Themen