与Maven协调,使用不同的文件夹进行集成测试

时间:2015-02-10 13:27:35

标签: maven concordion

我正在尝试使用Maven 3.2.5运行集成测试(用Concordion编写)。我做了以下事情。

  1. 使用quickstart原型创建了一个maven项目。
  2. 将我的源代码放在src / main / java中,单元测试放在src / test / java和integration中 在src / spec / java中测试。
  3. 使用maven-antrun-plugin将集成测试* .class放在target / integrationtest-classes中
  4. 使用maven-surefire-plugin运行单元测试用例。
  5. 使用maven-failsafe-plugin运行集成测试用例。
  6. 最后使用" mvn clean install"
  7. 运行所有内容

    问题是,虽然单元测试用例正在运行,但集成测试用例却没有。当我从Eclipse运行集成测试用例时,通过将它们作为JUnit运行,它们运行正常。但是,当我从Maven运行它们时,不知何故只运行单元测试用例。有人可以请帮助。

    我在这里附上我的pom.xml。

    <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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.acme.bundler</groupId>
    <artifactId>concordion</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    
    <name>concordion</name>
    <url>http://maven.apache.org</url>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
        <!-- Integration test. -->
        <integrationSourceDirectory>src/spec/java</integrationSourceDirectory>
        <integrationOutputDirectory>target/integrationtest-classes</integrationOutputDirectory>
    
    </properties>
    
    <dependencies>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.concordion</groupId>
            <artifactId>concordion</artifactId>
            <version>1.4.6</version>
        </dependency>
    </dependencies>
    
    
    <build>
        <pluginManagement>
            <plugins>
    
                <!-- Compile and run using jdk 1.7 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                            <configuration>
                                <compilerArguments>
                                    <d>${integrationOutputDirectory}</d>
                                </compilerArguments>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!-- Run the main class of Java. -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>java</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <mainClass>com.acme.bundler.concordion.App</mainClass>
                        <arguments>
                            <argument>foo</argument>
                            <argument>bar</argument>
                        </arguments>
                    </configuration>
                </plugin>
    
                <!-- The artefacts of integration tests need to move to a different folder 
                    than the output of unit tests. -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                        <execution>
                            <id>create-directory</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <echo message="Creating Directory ${integrationOutputDirectory}" />
                                    <mkdir dir="${integrationOutputDirectory}" />
                                </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
    
                <!-- Move the .class of the .java files in integration tests. <mkdir 
                    dir="${itest.testOutputDirectory}" /> <move todir="${itest.testOutputDirectory}"> 
                    <fileset dir="${project.build.testOutputDirectory}"> <include name="**/*.class" 
                    /> <present targetdir="${spec.testSourceDirectory}"> <mapper type="glob" 
                    from="*.class" to="*.java" /> </present> </fileset> </move> -->
    
    
    
    
                <!-- Surefire is designed to run the unit tests. If any of the tests 
                    break the whole build breaks. -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18.1</version>
                    <configuration>
                        <test>**/*.java</test>
                    </configuration>
                </plugin>
    
                <!-- Failsafe is designed to run integration tests. -->
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <testClassesDirectory>${integrationOutputDirectory}</testClassesDirectory>
                        <reportsDirectory>${integrationOutputDirectory}/failsafe-reports</reportsDirectory>
                        <test>**/*.java</test>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.7</version>
                    <executions>
    
                        <!-- Copy integration tests. -->
                        <execution>
                            <id>add-test-sources</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>add-test-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>${integrationSourceDirectory}</source>
                                </sources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-test-resources</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>add-test-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>${integrationSourceDirectory}</directory>
                                        <targetPath>${integrationOutputDirectory}</targetPath>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-empty-directory</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>add-test-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>${integrationSourceDirectory}</directory>
                                        <targetPath>${integrationOutputDirectory}</targetPath>
                                        <excludes>
                                            <exclude>**/*</exclude>
                                        </excludes>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
            </plugins>
        </pluginManagement>
    </build>
    

0 个答案:

没有答案