書き物

技術とか作った物の話とか愚痴文句感想など

FlexUnitでテストしてみる

昨日のテストをFlexUnitでやってみました。

FlexUnitはGUIでテスト結果を確認できるみたいです。

参考ページ

2008-05-13 - Codin’ In The Free World


失敗結果

f:id:asahiufo:20081022232241p:image

これは見やすい。


AS3UnitにもAirGUIツールがあるのですが、僕の環境の問題か、Airランタイムのバージョン云々でインストールできませんでした。なんでか。


昨日のテストケースをFlexUnitにて。

package tests.mylib.geom
{
import flexunit.framework.TestCase;
import flexunit.framework.TestSuite;
import mylib.geom.Speed;
/**
    * Speedクラステスト
    */
public class SpeedTest extends TestCase
{
/**
        * コンストラクタ
        * 
        * @param method テストメソッド
        */
public function SpeedTest(method:String)
{
super(method);
}
/**
        * テストスイート取得
        * 
        * @return テストスイート
        */
public static function suite():TestSuite
{
var ts:TestSuite = new TestSuite();
ts.addTest(new SpeedTest("testConstructor"));
ts.addTest(new SpeedTest("testSetter"));
ts.addTest(new SpeedTest("testSetSpeedByAngle"));
ts.addTest(new SpeedTest("testGetAngleBySpeed"));
return ts;
}
/**
        * コンストラクタテスト
        */
public function testConstructor():void
{
var speed1:Speed = new Speed(11, 22);
assertEquals(11, speed1.x);
assertEquals(22, speed1.y);
var speed2:Speed = new Speed(23, 45);
assertEquals(23, speed2.x);
assertEquals(45, speed2.y);
var speed3:Speed = new Speed();
assertEquals(0, speed3.x);
assertEquals(0, speed3.y);
}
/**
        * セッターテスト
        */
public function testSetter():void
{
var speed:Speed = new Speed();
speed.x = 66;
assertEquals(66, speed.x);
speed.x = 1121;
assertEquals(1121, speed.x);
speed.y = 41;
assertEquals(41, speed.y);
speed.y = 655;
assertEquals(655, speed.y);
}
/**
        * スピードを角度指定して設定するテスト
        */
public function testSetSpeedByAngle():void
{
var speed:Speed = new Speed();
// スピード2、角度60度でスピード設定
speed.setSpeedByAngle(2, 60);
assertEquals(1, Math.round(speed.x));
assertEquals(Math.sqrt(3), speed.y);
// スピードをルート2、角度225度でスピード設定
speed.setSpeedByAngle(Math.sqrt(2), 225);
assertEquals(-1, Math.round(speed.x));
assertEquals(-1, speed.y);
}
/**
        * スピードから角度取得テスト
        */
public function testGetAngleBySpeed():void
{
var speed:Speed = new Speed(1, Math.sqrt(3));
assertEquals(60, Math.round(speed.getAngleBySpeed()));
speed.x = 1;
speed.y = -Math.sqrt(3);
assertEquals(-60, Math.round(speed.getAngleBySpeed()));
}
}
}

昨日誤差でうまくいかなかった部分は、四捨五入することで無理やりテストしてます。テストを成功するためにテストケースを修正するという、まったく逆のやり方です。このやり方が正解なわけがない...。

f:id:asahiufo:20081022232240p:image


環境が整ったので、まずはテストする習慣をつけようと思います。