概觀

JUnit 是一種廣泛使用的 XML 格式,用於產生測試結果,並且大多數 CI 系統(例如 Jenkins)都原生支援外掛此格式,以便顯示更進階的報告。

Nightwatch 預設會輸出 JUnit 格式的 XML,並且可以透過 output_folder 設定進行控制。

設定

HTML 報表器從 v2.2 開始與 HTML 和 JSON 報表器預設為啟用,但其行為可以設定如下

透過設定檔

output_folder 設定用於指定儲存 JUnit XML 報告檔案的位置。Nightwatch 會為每個測試套件檔案寫入一個 XML 檔案。

nightwatch/.../lib/settings/defaults.js
module.exports = {
  output_folder: 'tests_output'
}

請參閱設定 > 輸出設定頁面,以取得與測試輸出相關的所有設定清單。

透過 CLI

您也可以使用 --output 旗標,在執行時透過 CLI 設定輸出資料夾。

nightwatch --output ./tests-output

請參閱CLI 參考頁面,以取得 Nightwatch 接受的所有 CLI 旗標清單。

XML 檔案名稱遵循下列模式

<BROWSER>_<VERSION>__<testSuiteFileName>.xml

範例

步驟 0:建立新專案

首先,讓我們建立一個新的空專案並在其中安裝 Nightwatch

mkdir ./test-project && cd ./test-project

步驟 1:安裝 Nightwatch 和 chromedriver

從 NPM 安裝 nightwatchchromedriver (chromedriver 是在 Google Chrome 瀏覽器中執行測試的 W3C WebDriver 實作;請確保您的電腦上已安裝最新的 Chrome 瀏覽器)

npm i nightwatch chromedriver

步驟 2:執行範例測試

考慮 duckDuckGo.js 範例測試

duckDuckGo.js
describe('duckduckgo example', function() {
  it('Search Nightwatch.js and check results', function(browser) {
    browser
      .navigateTo('https://duckduckgo.com')
      .waitForElementVisible('#search_form_input_homepage')
      .sendKeys('#search_form_input_homepage', ['Nightwatch.js'])
      .click('#search_button_homepage')
      .assert.visible('.results--main')
      .assert.textContains('.results--main', 'Nightwatch.js');
  }); 
});

我們可以使用以下指令來執行

npx nightwatch examples/tests/duckDuckGo.js --env chrome

若要僅產生內建的 JUnit-XML 報告,請執行以下指令

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit

若要產生內建的 JUnit-XML 和 HTML 報告,請執行以下指令 (v2.2+)

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit --reporter=html

步驟 3:檢視 JUnit XML 報告

JUnit XML 報告應該已在目前專案目錄內的本機 tests_output 資料夾中產生。它看起來會像這樣

<?xml version="1.0" encoding="UTF-8" ?>
<testsuites errors="0"
            failures="0"
            tests="1">

  <testsuite name="duckDuckGo"
    errors="0" failures="0" hostname="" id="" package="duckDuckGo" skipped="0"
    tests="1" time="2.007" timestamp="">
  
    <testcase name="Search Nightwatch.js and check results" classname="duckDuckGo" time="2.007" assertions="3">
    </testcase>
  </testsuite>

</testsuites>
</pre>

Jenkins 整合

JUnit 格式的 XML 輸出會透過「發佈 JUnit 測試結果報告」建置後動作預設整合到 Jenkins 中。

Publish JUnit test result report

透過將測試報告整合到 Jenkins 中,您可以產生趨勢和報告,並充分利用 Jenkins 報告功能。

Jenkins test results history

請參閱 Jenkins 使用者指南 以取得更多詳細資訊。

JUnit 結構描述

完整的 Apache Ant JUnit XML .xsd 結構描述可在 Github 上取得:windyroad/JUnit-Schema/blob/master/JUnit.xsd

停用 JUnit 報告

如果需要,可以透過將 output_folder 設定設定為 false 來完全停用報告

nightwatch.conf.js
module.exports = {
  output_folder: false
}