TL; DR;如何在Intellij中轻松运行类上的测试,以便它们在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
阶段没有运行。
我希望能够在单个类上运行测试,并尽可能少地点击。我需要:
validate
发生时运行Right click > 'Run SomeTest'
阶段的某种方式,或mvn surefire:test -Dtest=$CLASS_NAME$
之类的命令在单个类上运行,但我不知道是否存在任何类似功能的属性($CLASS_NAME$
将是当前打开的类名类)有什么想法吗?
答案 0 :(得分:1)
默认情况下,当你运行测试时,intellij不会运行任何maven东西,而你所要求的东西可能不会起作用(afaik)。
但是,可能还有另一种方法可以实现这一目标。该插件生成一个随机端口并将其分配给给定变量。它用于在同一个盒子上同时运行多个测试,并且没有端口冲突。当您手动运行测试时,您可能没有相同的约束,您可以在已知端口上运行它。为此,您可以使用IntelliJ的测试运行配置对话框将my-first-port
的值设置为已知值(例如56789)。
答案 1 :(得分:0)
我在IntelliJ的外部工具中找到了部分解决方案。我可以轻松设置cmd /C mvn test-compile surefire:test -Dtest=$FileClass$
。多亏了它,我可以点击Tools > External Tools > MyTool
进行单项测试。
最大的缺点是我无法通过这种方式调试测试。不幸的是,运行配置并没有宏$FileClass$
,因此每当我调试它时,我仍然需要为每个类设置单独的运行配置。