3

我已将 maven 配置为通过maven-gunit-plugin运行gunit(一个 ANTLR 语法单元测试工具)。然而,gunit 有两种不同的模式。第一种模式使 gunit 充当解释器,读取 *.gunit(或 *.testsuite)文件,解释它并显示结果。可以这样配置:

  <plugin>
    <groupId>org.antlr</groupId>
    <artifactId>maven-gunit-plugin</artifactId>
    <version>3.1.3</version>
    <executions>
        <execution>
            <id>maven-gunit-plugin</id>
            <phase>test</phase>
            <goals>
                <goal>gunit</goal>
            </goals>
        </execution>
    </executions>
  </plugin>

第二种模式使 gunit 生成可以由 JUnit 运行的源代码。如何指示 maven-gunit-plugin 生成 JUnit 源而不是充当解释器?

几点注意事项:

  • 我可以将测试阶段更改为“生成测试源”以使 maven 插件在正确的时间运行。
  • 我在 maven-gunit-plugin 上找不到任何有用的文档
  • 我见过人们使用exec-maven-plugin来运行带有特定命令行选项的 gunit,但我不打算这样做。

编辑/解决方案:

在阅读了各种回复后,我下载了 ANTLR 源代码,其中包括 maven-gunit-plugin。该插件不支持junit生成。事实证明,gunit-maven-plugin 的 codehaus 快照和 exec 插件是目前唯一的选择。

4

2 回答 2

3

我发现了一个通过MNG-4039进行的讨论,并附有示例说明。我会让你阅读整篇文章,但根据作者的说法,你最终应该得到这样的结果:maven-gunit-plugin gunit-maven-plugin

<dependencies>
  <dependency>
    <groupId>org.antlr</groupId>
    <artifactId>antlr-runtime</artifactId>
    <version>3.1.1</version>
  </dependency>
  <!-- Here is the 'extra' dep -->
  <dependency>
    <groupId>org.antlr</groupId>
    <artifactId>antlr</artifactId>
    <version>3.1.1</version>
    <!-- we try to use scope to hide it from transitivity -->
    <scope>test</scope> <!-- or perhaps 'provided' (see later discussion) or 'import' (maven >= 2.0.9) -->
  </dependency>
</dependencies>
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>gunit-maven-plugin</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <executions>
        <execution>
          <goals>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

我自己没有测试这个配置,因此无法确认一切都在开箱即用。我什至不知道该插件是否已在非 SNAPSHOT 版本中发布。我唯一可以确认的是,似乎确实很难找到关于maven-gunit-plugin.

于 2009-09-28T22:56:53.583 回答
1

这里有一个悲伤的消息

我发现到目前为止,maven 还没有 GUnit 功能(无论是 JUnit 测试生成还是直接调用 GUnit)。我已经与 Jim Idle 邮寄过关于
antlr3-maven-plugin 中 GUnit 的状态的邮件,并了解到队列中等待的 maven-plugin 的旧版本有一个补丁。

我认为这种 解决方法是唯一的选择。

于 2009-09-29T01:48:12.913 回答