为 Intellij 中的测试设置 属性

Set property for tests in Intellij

TL;DR;如何在 Intellij 中轻松 运行 测试 class,以便它们在 Maven 中执行 validate 阶段并设置所有 Spring 属性。

我已经将 maven 项目导入 Intellij。测试 运行 使用 surefire,即 mvn surefire:test -Dtest=SomeTest。其中一些测试需要分配端口。 Spring 属性 端口号设置在 validate 阶段使用:

<plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>port-allocator-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>allocate-ports</goal>
            </goals>
            <configuration>
                <ports>
                    <port>
                        <name>my-first-port</name>
                    </port>
                </ports>
            </configuration>
        </execution>
    </executions>
</plugin>

当我通过 Right click on file > 'Run SomeTest' 从 Intellij 运行 进行测试时,需要 my-first-port 的测试失败了。显然 validate 阶段不是 运行.

我希望能够 运行 对单个 class 进行测试,点击次数越少越好。我需要:

有什么想法吗?

默认情况下,当您 运行 您的测试时,intellij 不会 运行 任何 maven 东西,而您所要求的可能不会工作 (afaik)。

但是,可能还有另一种方法可以实现这一点。该插件生成一个随机端口并将其分配给给定的变量。它用于 运行 在同一个盒子上同时进行多个测试并且不会有端口冲突。当您 运行 手动测试时,您可能没有相同的约束,您可以 运行 它在已知端口上。为此,您可以使用 IntelliJ 的测试 运行 配置对话框将 my-first-port 的值设置为已知值(比如 56789)。

我在 IntelliJ 的外部工具中找到了部分解决方案。我可以在那里轻松设置 cmd /C mvn test-compile surefire:test -Dtest=$FileClass$。多亏了它,我可以 运行 单次测试 3 单击 Tools > External Tools > MyTool

最大的缺点是我无法通过这种方式调试测试 运行。不幸的是 运行 组合没有宏 $FileClass$,所以我仍然需要为每个 class 设置单独的 运行 配置。