簡體   English   中英

使用Jenkins和Apache Ant運行QUnit測試?

[英]Running QUnit tests with Jenkins and Apache Ant?

是否可以從Jenkins執行我的QUnit(javascript)單元測試? 我的構建腳本是Apache Ant。 Jenkins會將其作為單獨的Build Step執行,還是需要在Ant構建腳本的配置中添加一些內容?

所以,我終於設法搞清楚了。

這是我的端到端實現:

  1. 安裝PhantomJS( http://phantomjs.org/ ) - 我在build / tools文件夾中安裝了它

  2. 安裝PhantomJS QUnit Runner腳本( https://gist.github.com/1588423 ) - 也在我的build / tools文件夾中安裝

  3. 在build.xml文件中添加了以下目標:

    <target name="qunit" description="runs QUnit tests using PhantomJS">
      <!-- QUnit Javascript Unit Tests -->
      <echo message="Executing QUnit Javascript Unit Tests..."/>
      <apply executable="path-to-your-phantomjs-bin-folder/phantomjs" >
        <arg value="-path-to-your-build-tools/qunit-runner.js" />
        <arg line="--qunit path-to-your-qunit-folder/qunit.js --tests path-to-your-test-folder --juni path-where-you-want-to-write-the-JUnit-style-output/qunit-results.xml" />
        <fileset dir="${basedir}/${dir.test}" includes="tests.js" />
        <srcfile/>
      </apply>
    </target>
  1. 在我的Jenkins項目配置下,我現在用“minify qunit”調用Ant

  2. 我將Jenkins指向JUnit樣式的輸出XML文件

而且,這是工作流程:

  1. 檢查我的回購中的更改
  2. Jenkins將對GitHub進行調查
  3. 如果有任何變化,詹金斯將拉下來
  4. 將調用Ant,執行構建,然后運行我的單元測試
  5. 測試結果將以類似JUnit的XML格式發布
  6. Jenkins將分析此輸出文件。 如果沒有測試失敗,則構建將標記為“成功”。 如果任何測試失敗,則構建將標記為“不穩定”
  7. Jenkins將部署Web更改
  8. 詹金斯將清理工作區

PS:目前,您必須手動刪除JUnit類型的XML輸出文件。 我稍后會解決這個問題。

PS:下載定制的qunit.js( https://gist.github.com/2488794

我專門為此編寫了一個Ant任務

https://github.com/philmander/ant-jstestrunner

如果我正確理解您的設置,您可以運行Ant構建步驟,為其提供build.xml ,頂級目標和-D參數(如果有)的位置。 可能會有所幫助。

Qunit本身現在有一個phantomjs跑步者:

https://github.com/jquery/qunit/tree/master/addons/phantomjs

所以假設你已經安裝了phantomjs,從上面的鏈接中獲取runner.js (或者使用bower / js包管理器獲取它),把它放在jenkins找到它的地方,然后使用:

phantomjs path/to/runner.js path/to/your/qunit_tests.html

它提供最小的輸出,如下所示:

$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html 
Took 29ms to run 11 tests. 11 passed, 0 failed.

如果它失敗了,或者像這樣:

$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html 
Test failed: sinon tests of navigator.id.watch: watch sees current user
    Failed assertion: check user, expected: current user, but was: baz
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:556
    at file:///home/harry/superlists/accounts/static/tests/tests.html:69
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:203
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:361
    at process (file:///home/superlists/superlists/static/tests/qunit.js:1453)
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:479
Took 29ms to run 11 tests. 10 passed, 1 failed.

沒有junit-xml集成,但至少它會在失敗時返回錯誤代碼,所以它會在jenkins構建失敗...

$ echo $?
1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM