Maven不会编译测试文件夹中的类

时间:2019-04-10 09:47:32

标签: java maven testing pom.xml

我正在尝试对使用Java开发的组件进行一些端到端测试。因此,test中的这些类不是单元测试,我只想将它们作为普通的Java类运行。

我的源在src\main\java文件夹中,而测试则在src\test\java内部。该测试有两个Java类,一个是util类,另一个是在main中扩展一个类,并且还具有main方法。 最终,我需要运行此主要方法

我创建了两个pom文件,一个用于主项目,一个用于运行测试。测试pom文件中的唯一区别是mainClass属性。 当我在src\main\java中拥有测试类时,maven对其进行了编译,并且我能够毫无问题地运行它们

由于在src\main\java文件夹中进行测试是一种不好的做法,因此我想将其移至src\test\java文件夹中。但这不起作用。它编译项目,但不编译测试类(显然是因为现在它不在src\main\java文件夹中)。因此,我在测试pom文件的类路径作用域中添加了test,如下所示。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.my.company.project.MyTestClass</mainClass>
        <classpathScope>test</classpathScope>
    </configuration>
</plugin>

但这不起作用。

因此,我尝试了maven本身提供的solution,但这是相同的。它以清单文件中的主类创建我的测试类的jar文件。但是jar文件中没有这样的类,也没有main中的类。运行jar文件时出现以下错误。

Could not find or load main class com.my.company.project.MyTestClass

我的最终目标是能够使用maven编译并运行我的Test类(以测试主类)。

您能建议我实现这一目标的方法吗?

编辑:

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.my.company</groupId>
    <artifactId>my-artifact</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <properties>
        ...
    </properties>

    <developers>
        ...
    </developers>

    <dependencies>
       ...
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.6.0</version>
                </plugin>
                ...
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.my.company.project.MyClass</mainClass>
                <classpathScope>test</classpathScope>
            </configuration>
        </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.my.company.project.MyClass</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>-verbose</arg>
                        <arg>-Xlint:all,-options,-path</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

编辑2:

根据@notionquest的评论,我更新了POM文件。现在测试类正在编译,但是在jar文件中不可用。因此,它仍然给我错误:

Error: Could not find or load main class com.trivago.visual.debezium.test.ChangeDataCaptureSenderTest

0 个答案:

没有答案