在Intellij中设置测试属性

时间:2016-07-07 15:12:04

标签: spring maven intellij-idea maven-surefire-plugin

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'阶段的某种方式,或
  • 在Intellij maven运行配置中创建,可以使用mvn surefire:test -Dtest=$CLASS_NAME$之类的命令在单个类上运行,但我不知道是否存在任何类似功能的属性($CLASS_NAME$将是当前打开的类名类)

有什么想法吗?

2 个答案:

答案 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$,因此每当我调试它时,我仍然需要为每个类设置单独的运行配置。