为 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 进行测试,点击次数越少越好。我需要:
- 当
Right click > 'Run SomeTest'
发生时 运行 validate
阶段的某种方式,或
- 在 Intellij maven 运行 配置中创建,它可以是 运行 在单个 class 上使用像
mvn surefire:test -Dtest=$CLASS_NAME$
这样的命令,但我不知道是否存在像功能这样的属性($CLASS_NAME$
将是当前打开的 class 的名称 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 设置单独的 运行 配置。
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 进行测试,点击次数越少越好。我需要:
- 当
Right click > 'Run SomeTest'
发生时 运行validate
阶段的某种方式,或 - 在 Intellij maven 运行 配置中创建,它可以是 运行 在单个 class 上使用像
mvn surefire:test -Dtest=$CLASS_NAME$
这样的命令,但我不知道是否存在像功能这样的属性($CLASS_NAME$
将是当前打开的 class 的名称 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 设置单独的 运行 配置。