FlexUnitでテストしてみる
昨日のテストをFlexUnitでやってみました。
FlexUnitはGUIでテスト結果を確認できるみたいです。
参考ページ
2008-05-13 - Codin’ In The Free World
失敗結果
これは見やすい。
AS3UnitにもAir製GUIツールがあるのですが、僕の環境の問題か、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())); } } }
昨日誤差でうまくいかなかった部分は、四捨五入することで無理やりテストしてます。テストを成功するためにテストケースを修正するという、まったく逆のやり方です。このやり方が正解なわけがない...。
環境が整ったので、まずはテストする習慣をつけようと思います。