如何 运行 使用 intellij 和 maven 对 Web 应用程序进行集成测试

how to run integration test for a web application with intellij and maven

我正在将 java 中的 Web 应用程序从 ANT 迁移到 MAVEN,以解决库和依赖项的问题。我正在使用 IDE "intellij IDEA 14".

我将 .java 文件移动到 main/java 文件夹,将资源(.properties 和 XML)移动到文件夹 main/resources 文件夹,然后将我的 . jsp 个文件到 main/webapps 文件夹。我已经有一个没有依赖问题的应用程序的可执行版本。

现在我遇到了 TDD 问题,我将测试文件移动到 test/java 文件夹,但是当我 运行 集成测试全部失败,因为他们找不到资源webapps 文件夹。

更准确地说,失败的测试是那些检查使用 jasper-report 生成的报告的测试,这些报告位于 webapps 内的报告文件夹中。

当查看目标文件夹中生成的文件夹时,我看到我有一个 "test-classes" 文件夹,其中包含每个 tdd 的 .class 和 "classes" 文件夹,其中包含 .class 的源代码,但无处可见 webapps 文件。

测试 运行 在 ant 版本中没有问题,当我在 ANT 中构建时,它会生成一个项目文件夹,其中包含 webapps 文件夹中的文件和 WEB-INF/classes .class 源代码和 TDD 文件。

我检查文件夹是否设置正确

这些测试使用文件路径查看 jrxml 文件是否存在于视图文件夹的 module/report 文件夹中:../../../modulo/reporte/file_name。

生成报告文件路径的class在project/web-inf/classes/system中,使用以下代码:

URL path = Constantes.class.getResource (rutaReporte)

之后检查它们是否编译并且 return 一个有效的结果(完整的 JasperPrint)

我必须如何使用 Intellij 对 运行 en MAVEN 进行集成测试?

我使用 "maven-resources-plugin" 插件修复它,将所有 webapp 资源复制到 test-类 以便 tdd 可以找到要测试的资源

这是我的 pom 配置:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    ...


    <build>
    ...

        <plugins>
            ...

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>additional-resources</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/src/main/webapp</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>