2009-10-20 31 views
1

我剛剛嘗試過ASUnit,它並不成功,因此我在尋找更簡單的東西,不需要花哨的用戶界面。 跟蹤輸出很好。AS2的UnitTest框架?

ASUnit不是成功的,因爲它有一些奇怪的原因 在/ Applications的所有子目錄中生成AllTests.as文件。 我不知道如何阻止這種情況發生,所以我 尋找更簡單的東西。我在ruby,C++和objective c中做了很多單元測試 ,所以它對我來說並不是全新的。

我的項目是針對Flash 9並使用ActionScript 2.我在Flash CS4中工作。

需要測試的代碼是數學函數,它需要一個或兩個浮點參數 並返回浮點值 ,因此非常適合測試。

任何想法?

更新:現在我寫了我自己的測試代碼,在這裏。 quickndirty。

function run_tests(test_function_names:Array):Void { 
    trace("running tests"); 
    var tests_passed:Number = 0;   
    var tests_failed:Number = 0;  
    var tests_total:Number = test_function_names.length; 

    for(var i=0; i<tests_total; ++i) { 
     var funname = test_function_names[i]; 
     var fun = this[funname]; 
     if(typeof fun != 'function') { 
      throw("ERROR: " + funname + " is not a function!"); 
      return; 
     } 
     trace("testing .... " + funname); 
     try { 
      fun.call(this); 
      tests_passed += 1; 
     } catch(msg) { 
      trace("ERROR: " + funname + "\n" + msg); 
      tests_failed += 1; 
     } 
    } 
    if(tests_failed > 0) { 
     trace("" + tests_failed + " of " + tests_total + " tests failed."); 
    } else { 
     trace("All " + tests_total + " tests executed successfully"); 
    } 
} 

public function assert_equal_float(v_expected:Number, v_actual:Number, v_precision:Number) { 
    if(v_actual == undefined) { 
     throw "v is undefined"; 
    } 
    var v = v_expected - v_actual; 
    if(v < 0) v = -v; 
    if(v > v_precision) { 
     var s1:String = MYUtils.print_r(v_expected); 
     var s2:String = MYUtils.print_r(v_actual); 
     var s:String = "expected " + s1 + ", but got " + s2; 
     throw s.split("\n").join(""); 
    } 
} 

public function test_a():Void { 
    assert_equal_float(2, 2, 0.01); 
} 

public function test_b():Void { 
    assert_equal_float(2.9999, 3.001, 0.01); 
} 

public function test_c():Void { 
    assert_equal_float(3, 3, 0.01); 
} 

function run():Void { 
    var test_function_names:Array = new Array(
     "test_a", 
     "test_b", 
     "test_c" 
    ); 
    run_tests(test_function_names) 
} 

輸出是這樣的:

running tests 
testing .... test_a 
testing .... test_b 
testing .... test_c 
All 3 tests executed successfully 
+0

出於興趣,如果你的目標Flash Player 9和使用CS4爲什麼你在AS2編碼? :) – Allan 2009-10-20 23:32:55

+0

針對Flash Player 9是我正在開發的項目的一項要求。這是我的第一個Flash項目!我認爲它不可能在Flash Player 9中使用AS3。很難找到AS2文檔,大部分時間我遇到了Flex,Air,AS3信息。從C到AS,我真的很想念printf。沒有可怕的內置正則表達式!希望AS3不那麼痛苦。 – neoneye 2009-10-21 15:54:51

回答

1

我覺得不會有太多的AS2單元測試框架......

我發現as2lib,主頁是死了,但你仍然可以去到它的API page並得到它的代碼project on SourceForge

也有astuce。但其二次開發已停止。

你可能會嘗試端口PerformanceTest from gskinner到AS2太...:P

+0

謝謝安迪。同意,它不幸的是,這麼多重要的網頁在幾年後死去。這些項目看起來非常有用。 – neoneye 2009-10-20 16:22:28