2014-10-01 18 views
6

Mam aplikację złożoną z wielu projektów wojennych.Testy integracyjne aplikacji wielozakresowej w Spring Boot

Mam inny projekt maven, który uruchamia testy integracyjne JUnit przeciwko ręcznie uruchomionej wielotorowej aplikacji opartej na tomcat przy użyciu wywołań org.springframework.web.client.RestTemplate.

Chciałbym jednak, aby mój projekt testu integracyjnego faktycznie uruchomił moją wielowarstwową aplikację (raz na cały pakiet) przed uruchomieniem testów ... w czasie wiosennego rozruchu!

Z mojego projektu testu integracji, chciałbym móc uruchomić wszystkie projekty wojenne razem jako aplikacja wiosennego rozruchu, każdy z własną ścieżką kontekstową (np. Localhost: 8080/a dla projektu "a", localhost : 8080/b dla projektu "b" itp.) I bez zmiany pierwotnych projektów wojennych (które nie są (jeszcze) świadome wiosennego rozruchu). Jeśli nie mogę wykonać tych projektów z mojego projektu testu integracyjnego w wiosennym rozruchu bez ich zmiany, to przynajmniej chciałbym zminimalizować użycie zależności i konfiguracji w pakietach wojennych ... tak bardzo, jak to możliwe .

Mogłem sprawić, że mój projekt testu integracyjnego będzie zależał od pojedynczego projektu wojennego, uruchomienia go i uruchomienia testów przeciwko niemu ... ale nie udało mi się uzyskać dwóch projektów wojennych działających razem w wiosennym rozruchu w ramach oddzielnych ścieżek kontekstu.

Wszelkie sugestie byłyby mile widziane!

Oto niektóre z zasobów używam umieścić to razem:

+2

I Jestem zdezorientowany. Wygląda na to, że wojny, które próbujesz uruchomić, nie używają Spring Boot. Zakładając, że to jest poprawne, dlaczego próbujesz użyć Spring Boot, aby je uruchomić? Być może źle zrozumiałem. Czy możesz rozszerzyć nieco o to, co próbujesz osiągnąć i dlaczego Spring Boot pomoże Ci go osiągnąć? –

+0

Dobre pytanie @AndyWilkinson. Masz rację. Wojny nie używają sprężynowego buta i nie zamierzam ich tak robić. Zostaną wdrożone w WebLogic do produkcji. Jednak chcę przeprowadzić testy integracyjne przeciwko w pełni wdrożonej aplikacji (zarówno lokalnie, jak i w architekturze Jenkins) w taki sposób, że nie muszę ręcznie uruchamiać wszystkich wojen w tomcat ...raczej coś w rodzaju "testu mvn". Myślałem, że wiosenny but może być dobrym kandydatem do tego. To pomaga? – sdoxsee

+3

Nie uważam Spring Boot za właściwe narzędzie do pracy. Nie możesz użyć wtyczki Tomven i skonfigurować go do wdrażania wielu aplikacji internetowych? Coś takiego: http://stackoverflow.com/a/13193937/1384297 –

Odpowiedz

6

Zgodnie z sugestią Andy, poszedłem z wtyczką Tomcat7 Maven i wszystko działało dobrze. Wtyczka Jetty Maven była inną opcją (i lepiej udokumentowaną IMO), chociaż nie mogłem znaleźć sposobu na uniknięcie konieczności podawania "ścieżki" do moich plików WAR. Plugin Tomcat7 Maven, pozwól mi załadować moje WAR z mojego lokalnego repozytorium .m2. Należy również powiedzieć, że poniższe linki były pomocne, jak również ...

Oto część mojego projektu integracji Test pom ...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <skipTests>true</skipTests> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <includes> 
        <include>**/*Test*</include> 
       </includes> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <path>/</path> 
       <webapps> 
        <webapp> 
         <groupId>com.mycompany</groupId> 
         <artifactId>app1</artifactId> 
         <version>${project.version}</version> 
         <type>war</type> 
         <asWebapp>true</asWebapp> 
        </webapp> 
        <webapp> 
         <groupId>com.mycompany</groupId> 
         <artifactId>app2</artifactId> 
         <version>${project.version}</version> 
         <type>war</type> 
         <asWebapp>true</asWebapp> 
        </webapp> 
       </webapps> 
      </configuration> 
      <executions> 
       <execution> 
        <id>start-tomcat</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>run-war</goal> 
        </goals> 
        <configuration> 
         <fork>true</fork> 
        </configuration> 
       </execution> 
       <execution> 
        <id>stop-tomcat</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>shutdown</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

Czy istnieje sposób, aby zapobiec ładowaniu aplikacji webowych przez dodatek maven lub tomcat, jeśli uruchomię mvn clean install -DskipTests? –