2012-10-23 18 views
7

私はちょうどQUnitを使用して問題が発生し始めています。QUnitはテストを実行しません

私は現在、JavaScriptコンパイラであるTypeScriptを使用しています。私は主なクラスの構造と並行したクラスで私のテストを受けています。

これらのクラスのそれぞれには、runTests()という関数があります。

これらのテストを実行するには、ループして "Test"で終わるすべてのクラスを取得してから、runTests()関数を呼び出します。

runtestsと書いた例()関数は次のとおりです。

runTests = function() { 
    QUnit.test("5 = 5", function() { 
    QUnit.ok(5 == 5, "okay"); 
    }); 
} 

私は(彼らは呼ばれているのように、理由はコンソール出力の確認)runtestsと書いすべての()の仕事を知っているが、せいぜいそれしか私は1つのテストを示しています。それは常に(同じrunTests()内の複数のテストでも)最後に呼び出されたテストのようです。

QUnitは自分自身をリセットするので、私は1つしか見ないのですか、何かもっと根本的なものを見逃していますか?

ありがとうございました。


私が使用するHTMLは、ケースには、重要、ここにある:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>QUnit Example</title> 
    <link rel="stylesheet" href="qunit-git.css"> 
</head> 
<body> 
<div id="qunit"></div> 
<script src="qunit-1.10.0.js"></script> 
<script src="mycode.js"></script> 
<script type="text/javascript"> 
    function runTest() { 
     var testClasses = getClassesRecurse(Test, []); 

     function getClassesRecurse(target, testClasses) { 
      if (typeof target == 'function' && /Test$/.test(target.name)) { 
       testClasses.push(target); 
      } else if (typeof target == 'object') { 
       for (var i in target) { 
        getClassesRecurse(target[i], testClasses); 
       } 
      } 

      return testClasses; 
     } 

     for (var i in testClasses) { 
      var testObj = new testClasses[i](); 

      if (testObj.runTests) { 
       console.log('Testing: ' + testClasses[i].name, testObj); 
       testObj.runTests(); 
      } 
     } 
    } 

    runTest(); 
</script> 
</body> 
</html> 
+0

jsfiddle、please。 – c69

答えて

16

をだから、自分の質問に答えるために:私は、テストの「再放送」を打っていたし、それは見せていたように見えます私はただ一つのテスト。クエリ文字列を削除するとすべてがうまくいきました。

QUnitへの提案:大きなフォントでメッセージを追加する:「1つのテストのみを実行し、ここをクリックしてすべてを実行する」 = p

関連する問題