Include new test directory maven surefire plugin

2019-02-19 02:16发布

问题:

Existing Structure : src/test/java --> All java unit tests. This gets picked up easily by Maven surefire plugin. Now, in addition to these java unit test cases, I want to include some groovy test cases, and I want to put them under src/test/groovy. How do I make the surefire plugin pick up these test cases? I am using Intellij 12.0 ulitmate edition.

 <plugin>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
           <additionalClasspathElements>
               <additionalClasspathElement>../groovy</additionalClasspathElement>
           </additionalClasspathElements>
           <excludes>
                <!-- ignore inner classes -->
                <exclude>**/*$*.java</exclude>

           </excludes>
       </configuration>
       <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>2.12</version>
          </dependency>
    </dependencies>
   </plugin>

Update : I also tried build-helper-maven-plugin

  <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
            <!-- States that the plugin's add-test-source goal is executed at generate-test-sources phase. -->
            <execution>
                <id>add-groovy-test-sources</id>
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>add-test-source</goal>
                </goals>
                <configuration>
                    <!-- Configures the source directory of integration tests. -->
                    <sources>
                        <source>src/test/groovy</source>
                    </sources>
                </configuration>
            </execution>
        </executions>
    </plugin>

Now, if i run the "test" goal, i see C:\Developer\Code\myProj\trunk\ss\src\test\groovy added.

But I dont see any class generated for the groovy file.

Final Answer, thanks to @khmarbaise , I just upgraded the versions, and removed the GMaven compilation

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.1.3</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <compilerId>groovy-eclipse-compiler</compilerId>
                <verbose>true</verbose>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>2.8.0-01</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-batch</artifactId>
                    <version>2.1.3-01</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
        </plugin>

    </plugins>
</build>

回答1:

The following pom is working:

<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.soebes.groovy</groupId>
  <artifactId>first-groovy</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>Test Groovy Scripting</name>

  <properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.gmaven.runtime</groupId>
      <artifactId>gmaven-runtime-2.0</artifactId>
      <version>1.5</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.8.7</version>
    </dependency>
      <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert</artifactId>
        <version>1.4</version>
      </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <compilerId>groovy-eclipse-compiler</compilerId>
          <verbose>true</verbose>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-compiler</artifactId>
            <version>2.8.0-01</version>
          </dependency>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-batch</artifactId>
            <version>2.0.7-03</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <version>1.5</version>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.gmaven.runtime</groupId>
            <artifactId>gmaven-runtime-2.0</artifactId>
            <version>1.5</version>
          </dependency>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
            <version>1.8.6</version>
          </dependency>
        </dependencies>
        <configuration>
          <debug>false</debug>
          <verbose>true</verbose>
          <stacktrace>true</stacktrace>
          <defaultScriptExtension>.groovy</defaultScriptExtension>
          <providerSelection>2.0</providerSelection>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>testCompile</goal>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>

You can see a full working example here. This means having groovy tests under src/test/groovy java unit tests under src/test/java.



回答2:

Just as Java sources need to be compiled (as done by the maven-compiler-plugin), so do the groovy files. You need to add the gmaven-plugin, see http://docs.codehaus.org/display/GMAVEN/Building+Groovy+Projects#BuildingGroovyProjects-CompilingSources