当测试文件不是mavenise结构时,如何在Maven中运行Junit Test

时间:2016-12-28 11:06:23

标签: maven unit-testing junit pom.xml

我有这么多java文件和那些java文件test.java不在src / test / java结构中。 例如:我在src / java / abc中有一个名为abc.java的java文件,但是这个名为abcTest.java的java文件的测试文件位于src / java / junit / abc中。 所以我将如何通过maven pom.xml对这个java文件进行junit测试,因为maven需要src / main / java中的普通java文件和src / test / java中的测试文件,以便我将如何通过maven进行测试?

我在我的pom.xml中添加了junit依赖项和surefire插件。

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

并且surefire插件是

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.10</version>
               <configuration> 
               <testSourceDirectory>${basedir}/../src/java/junit/*.java</testSourceDirectory> 
               <testClassesDirectory>${project.build.directory}/classe‌​s/</testClassesDirectory>
<includes>
            <include>abcTest.java</include>
          </includes>
                </configuration> 
            </plugin>

我已经给出了mvn test命令,但它仍然在日志中给出了零测试。任何人都可以帮我解决这个如何通过maven运行junit test.java文件的问题吗?

2 个答案:

答案 0 :(得分:0)

假设您不能真正实现项目的结构,那么您必须自定义Surefire插件。

添加Junit依赖项已经足够 - 它只允许编译测试类。

因此,您正朝着正确的方向前进 - 您必须自定义负责运行测试的Maven Surefire插件。

现在,为了让Surefire插件运行不以*Test.java结束的测试,您必须更改包含内容。也就是说,您必须指定能够反映您希望运行的测试名称的正则表达式。

This page就是这样描述的。

答案 1 :(得分:0)

在基本目录标记和junit测试用例成功运行后,我在pom.xml中添加了以下两行。现在我正在运行mvn install,我在test.java中的所有测试用例都在运行,虽然我没有像maven那样的结构。

<testSourceDirectory>${basedir}/../src/java/junit</testSourceDirectory> 
        <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>

之后我添加了surefire插件,这就是我所有的junit测试用例都在运行。