2009-09-28 25 views
3

我有配置爲通過maven-gunit-plugin運行gunit(ANTLR語法單元測試工具)的maven。然而,炮彈有兩種不同的模式。第一種模式使gunit充當解釋器,讀取* .gunit(或* .testsuite)文件,解釋它並顯示結果。它可以這樣配置:如何使用maven-gunit-plugin生成JUnit源碼

<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-插件
  • 我見過的人使用exec-maven-plugin與特定的命令行選項來運行gunit任何有用的文檔,但我不希望這樣做。

EDIT /解決方案:

讀取各種響應後,我下載的ANTLR源代碼,其中包括行家-gunit的插件。該插件不支持junit生成而不是。事實證明,gunit-maven-plugin和exec插件的codehaus快照是目前唯一的選擇。

回答

3

我發現了一個discussion通過與 gunit-maven-plugin樣品所示MNG-4039。我會讓你閱讀整篇文章,但是,據筆者,你應該像這樣結束:

<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版本中發佈。我唯一可以確認的是,看起來確實很難找到有關的「真實」文檔。

+0

org.codehaus.mojo的gunit-maven-plugin與org.antlr的maven-gunit-plugin不一樣。不過,我會看到,如果有一個存儲庫/快照按上述方式工作。 – 2009-09-28 23:12:06

+0

@Pascal +1,@Kaleb插件確實不同。codehaus mojo已被專門編寫爲生成JUnit測試類的解決方法。如果你決定避開exec插件,那麼這個Mojo目前看起來是最好的選擇(假設它有效)。雖然被警告說SNAPSHOT後綴意味着該插件是易變的,並且可能會發生變化,但您可能希望採取本地副本並重命名/回覆它以避免發生重大更改。 – 2009-09-29 07:02:28

+0

用Rich的明智話語+1:使用SNAPSHOT版本可能會對您的構建穩定性造成致命傷害,爲了構建可再生性,我更願意使用「固定」版本。 – 2009-09-29 09:38:46

1

有噩耗here

我發現至今沒有 GUnit的功能(無論是JUnit的 測試生成或直接調用GUnit的 )對Maven現在。我 已經郵寄吉姆空閒的
antlr3 - Maven的插件concering GUnit的狀態,得知 有一塊膏藥貼在舊版本的 的Maven的插件在隊列中等待。

我認爲this解決方法是唯一的選擇。

+0

這兩篇引用的帖子比2009年5月1日發佈的maven-gunit-plugin的原始版本還要舊(參見http://www.antlr.org/pipermail/antlr-interest/2009-May/034276.html),所以我仍然懷疑我有一個正確的答案。調查更多.... – 2009-09-29 15:40:49