2011-08-08 78 views
2

我有一個Maven項目,它是一組使用JUnit運行的Selenium 2測試。換句話說,整個項目中唯一的事情是JUnit測試用例,它們都位於正常的源代碼目錄,即src/main/java中,因爲它們是項目中的主要源文件。如何在正常生命週期外使用Maven運行Selenium RC junit測試?

我希望能夠使用Maven運行這些相同的測試,但由於這些測試不是在項目中進行實際的單元測試或集成測試(它們不是自我測試,而是在其他地方測試Web應用程序),所以我不希望他們在正常的構建生命週期中運行。但是我仍然希望能夠在POM文件中定義測試階段/目標。

在這一點上我有點理解surefire插件的工作方式,我只是不知道如何從構建中分離執行。我希望所有新的執行都是獨立的,這樣我就可以通過執行如下操作來運行它們:mvn run-webtests並讓run-webtests階段與我的項目的編譯和包目標完全不同。

所以我想我有兩個問題整體:

1)我在正確的軌道上或者是有一些更好的方式來看待這個問題的?

2.)接下來需要做什麼才能完成這項工作?創建一個自定義階段?創建一個自定義目標?

對不起,提出這樣一個看似基本的問題,但我沒有找到任何這樣的人做任何事情的例子。

+0

我不明白;你爲什麼試圖在生命週期的「外部」這樣做? – krosenvold

回答

2

我認爲你是在正確的軌道上。不幸的是,Maven不幸的是在某些領域缺乏靈活性。通常可以製作適合的東西,但有時它可能是一個真正的痛苦。我認爲使這項工作最簡單的方法是爲您的硒測試使用不同的命名約定,並確保那些是excluded from您的「正常」測試運行。然後define a profile您將Surefire插件配置爲include您的硒測試並排除其他硒測試。然後運行硒測試,你可以只

mvn test -P selenium-tests 

,你可以設置它,這樣你可以運行mvn run-webtests的唯一途徑,是

  1. 定義custom lifecycle,其中「運行webtests」是生命週期中的一個階段,或者
  2. Write a plugin,雖然執行插件總是在其中包含':',所以它更像mvn myplugin:run-webtests

這些都是比pom中簡單的配置文件更多的工作和難以維護。

相關問題