2013-06-05 30 views
1

我想在Maven中使用jstestrunner和qunit設置一些javascript單元測試。我從事過許多Java單元測試,包括設置基礎設施,但是我對JavaScript做這件事很新。 jstestrunner頁面上的設置信息會跳過關鍵信息。我會在jstestrunner郵件列表上詢問這個問題,但是他們的codehaus頁面上的郵件列表鏈接是不活動的,我找不到聯繫開發負責人Christopher Hunt的方法,除了提交JIRA,似乎不合適。使用qunit和jstestrunner的真實例子?

使用頁面討論設置phantomjs,但它沒有提及qunit接口。我想這對使用qunit的人來說可能很明顯。

我已經創建了根JUnit測試包裝,但我看不到如何設置qunit的缺失鏈接。

+0

做這太問題可以幫助您? http://stackoverflow.com/questions/8525311/better-way-to-integrate-maven-qunit-phantomjs?rq=1 – Steen

+0

這是更有用的背景,是的。這也有助於我的結論,即Javascript單元測試仍然處於形成階段。 –

回答

0

我一直在使用QUnit,phantomjs,ant和修改後的版本a qunit-runner運行一些QUnit測試。代碼本身在一個封閉源代碼項目中,但其要點是我只在一個build.xml文件上調用ant test,並且只有一個目標test目標。

test target使用qunit-runner和一些命令行參數調用phantomjs。涉及到一些魔法,例如猜測qunit-runner想要從中注入要測試的文件的package.json。測試本身在ant構建文件中使用參數傳遞。

我對每個要測試的文件都有單獨的測試文件,每個測試文件至少有一個module定義。

qunit-runner爲qunit構造配置對象,注入要測試的文件幷包含qunit進程各個階段的回調鉤子,這允許我構建jUnit,查看xml以供入Jenkins構建服務器頁面。

我同意你的初步結論,即JavaScript世界的單元測試框架還處於初級階段。但另一方面,JavaScript是一種非常可塑的語言,並且在測試框架上沒有多少鐵代碼公約。在其他語言中,如果沒有某種模擬框架去使用單元測試框架,你也不會走得太遠。

0

我剛剛使用QUnit,PhantomJS和js-testrunner進行了基本設置和運行。 此鏈接幫助了一些:jstest-runner-sample-project

對於配置我使用:

  1. JS-的TestRunner 1.0.2
  2. QUnit 1.14.0
  3. PhantomJS v1.9.7
  4. 叢utils的v1.5.7(由JS-TestRunner的需要)
  5. 碼頭v8.1.15(由JS-TestRunner的需要)
  6. 傑克遜v1.9.13(由碼頭必需)

測試所需的4個文件:

  1. 的JUnit Java測試封裝 - FirstTest。java的
  2. HTML測試封裝的QUnit - firstTest.html
  3. JavaScript文件來測試 - tests.js
  4. log4j配置(標準,基本配置)

下面是我用這四個文件基本測試:

FirstTest.java:

package delta; 

import org.codehaus.jstestrunner.junit.JSTestSuiteRunner; 
import org.junit.runner.RunWith; 

@RunWith(JSTestSuiteRunner.class) 
@JSTestSuiteRunner.Include(value="firstTest.html") 
@JSTestSuiteRunner.ResourceBase({ "src-web/delta", "../lib" }) 
public class FirstTest { 
} 

firstTest.html:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="ISO-8859-1"> 
    <script type="text/javascript" src="script/jquery-1.8.3.min.js"></script> 
    <script type="text/javascript" src="script/qunit-1.14.0.js"></script> 
    <link type="text/css" rel="stylesheet" href="css/qunit-1.14.0.css"/> 
    <script type="text/javascript" src="tests.js"></script> 
<title>firstTest</title> 
</head> 
<body> 
    <div id="qunit"></div> 
    <div id="qunit-fixture"></div> 
</body> 
</html> 

tests.js:

/** 
* Supports firstTest.html 
*/ 
(function() { 
    var val; 

    module("First Test", { 
    setup: function() { 
     val = 1 
    } 
    }); 

    test("hello test", function() { 
    ok(val == "1", "Passed!"); 
    }); 
}()); 

我在Eclipse,它採用因此需要的路徑的測試文件項目的根目錄調用的JUnit。

配置簡單的測試,我可以用標準的Eclipse運行AS-> JUnit測試執行它們後:

enter image description here

相關問題