Я только что пробовал ASUnit, и это не удалось, , поэтому я ищу что-то более простое, не нужно причудливого интерфейса. след мощность в порядке.Рамки UnitTest для AS2?
ASUnit не был успешным, потому что по какой-то странной причине генерировал файлы AllTests.as во всех поддиректорах/Приложения. Я не могу понять, как остановить это, поэтому я ищет что-то более простое. Я провел много модульного тестирования в рубине, C++ и объективе c, поэтому он не совсем новый для меня.
Мой проект нацелен на Flash 9 и использует ActionScript 2. Я работаю во Flash CS4.
Код, требующий тестирования, - это математические функции, которые принимают один или два аргумента с плавающей запятой и возвращают значение с плавающей запятой, , поэтому оно хорошо подходит для тестирования.
Любые идеи?
UPDATE: теперь я написал свой собственный тестовый код, вот оно. 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
из интереса, если ваш таргетинг Flash Player 9 и с помощью CS4, почему вы кодирования в AS2? :) – Allan
Таргетинг Flash Player 9 - это требование для проекта, над которым я работаю. И это мой первый флеш-проект! Я не думаю, что его можно использовать AS3 с Flash Player 9. Очень сложно найти документацию по AS2, большую часть времени я сталкиваюсь с информацией о Flex, Air, AS3. Исходя из C в AS, я ДЕЙСТВИТЕЛЬНО пропустил printf. И никакого встроенного регулярного выражения это ужасно! Надеюсь, AS3 менее болезненна. – neoneye