【问题标题】:Set property for tests in Intellij在 Intellij 中设置测试的属性
【发布时间】:2016-11-09 23:43:47
【问题描述】:

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 &gt; 'Run SomeTest' 从 Intellij 运行测试时,需要 my-first-port 的测试失败。显然validate 阶段没有运行。

我希望能够以尽可能少的点击量在单个类上运行测试。我需要:

  • Right click &gt; 'Run SomeTest' 发生时以某种方式运行validate 阶段,或者
  • 在 Intellij maven 运行配置中创建,可以使用 mvn surefire:test -Dtest=$CLASS_NAME$ 之类的命令在单个类上运行,但我不知道是否存在任何类似功能的属性($CLASS_NAME$ 将是当前打开的类的类名)李>

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 问题是端口只是一个例子,我不想在 intellij 配置中模拟来自 pom 验证阶段的所有操作。
    【解决方案2】:

    我在 IntelliJ 的外部工具中找到了部分解决方案。我可以很容易地在那里设置cmd /C mvn test-compile surefire:test -Dtest=$FileClass$。多亏了它,我可以通过单击Tools &gt; External Tools &gt; MyTool 3 来运行单个测试。

    最大的缺点是我无法调试以这种方式运行的测试。不幸的是运行配置没有宏$FileClass$,所以我仍然必须在调试时为每个类设置单独的运行配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2017-10-13
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      相关资源
      最近更新 更多