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
sur l'intérêt, si votre ciblage Flash Player 9 et utilisent CS4 pourquoi tu codage dans AS2? :) – Allan
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