2009-10-20 11 views
1

Je viens d'essayer ASUnit et ce n'était pas un succès, donc je suis à la recherche de quelque chose de plus simple, pas besoin d'interface utilisateur de fantaisie. la sortie de trace est correcte.Les frameworks UnitTest pour AS2?

ASUnit n'a pas été un succès car pour une raison étrange, a généré des fichiers AllTests.as dans tous les sous-répertoires de/Applications. Je n'arrive pas à comprendre comment arrêter cela, donc je suis à la recherche de quelque chose de plus simple. J'ai fait beaucoup d'essais unitaires en ruby, C++ et objectif c, donc ce n'est pas entièrement nouveau pour moi. Mon projet cible Flash 9 et utilise ActionScript 2. Je travaille dans Flash CS4. Le code à tester est celui des fonctions mathématiques, qui prend un ou deux arguments à virgule flottante et renvoie une valeur à virgule flottante, , donc il est bien adapté pour les tests.

Des idées? MISE À JOUR: maintenant j'ai écrit mon propre code de test, le voici. 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) 
} 

sortie est comme ceci:

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

sur l'intérêt, si votre ciblage Flash Player 9 et utilisent CS4 pourquoi tu codage dans AS2? :) – Allan

+0

Ciblage Flash Player 9 est une exigence pour le projet sur lequel je travaille. Et c'est mon premier projet flash! Je ne pense pas qu'il soit possible d'utiliser AS3 avec Flash Player 9. Il est très difficile de trouver la documentation AS2, la plupart du temps je tombe sur Flex, Air, AS3 info. Venant de C à AS, je manque vraiment printf. Et pas de regexp intégré qui soit terrible! Espérons que AS3 est moins douloureux. – neoneye

Répondre

1

Je pense qu'il n'y a pas beaucoup unité frameworks de tests pour AS2 ...

Je trouve as2lib, page d'accueil est mort, mais vous pouvez toujours aller à API page et obtenir le code dans son project on SourceForge

Il ya aussi astuce. Mais son développement as2 est arrêté.

Vous pouvez essayer de le port PerformanceTest from gskinner AS2 aussi ...: P

+0

Merci Andy. D'accord, c'est malheureux que tant de pages importantes soient mortes après quelques années. Ces projets semblent très utiles. – neoneye

Questions connexes