'FlexUnit'에 해당되는 글 1건
- 2009/09/12 FlexUnit - Flex(플렉스) 단위 테스트 프레임워크
Flex에서 단위 테스트를 하자!
나는 모르고 있었다. Flex에도 단위 테스트를 위한 프레임워크가 있다는 것을.. 바로 FlexUnit으로 플렉스에서 단위 테스트를 할 수가 있다. 비슷한 프레임워크로 AsUnit이란 게 있는데, 아주 살짝 살펴보니 다음과 같은 차이가 있는 것 같다.
FlashDevelop에서 FlexUnit을 사용해 예제를 하나 만들어 보았다. 참고로 FlashDevelop은 유료 소프트웨어인 Flash Builder (구 Flex Builder)를 대체할 수 있는 오픈소스 소프트웨어이다. (여기에서 최신버전을 다운로드 받을 수 있다.)
그럼 예제를 따라해보자. 잠깐! 그 전에 여기에서 FlexUnit 라이브러리를 다운로드하고 시작하자. 다운로드한 압축파일 속 bin 폴더의 'FlexUnit.swc' 파일을 사용하게 될 것이다.
1. FlashDevelop에서 Flex 3 프로젝트를 생성한다.
메뉴에서 Project > New Project를 선택한다. 템플릿에서 Flex 3 Project를 선택하고, 프로젝트 이름, 저장 위치, 기본 패키지 이름을 채우고 프로젝트를 생성한다.
프로젝트가 생성되면 우측 프로젝트 뷰에서 src 폴더 속 방금 지정한 패키지에 'Main.mxml' 파일이 생긴 것을 볼 수 있다.
2. 해당 프로젝트에 FlexUnit 라이브러리를 추가한다.
lib 폴더에 앞에서 말했던 FlexUnit.swc 파일을 복사한다. 그리고 FlexUnit.swc 파일에서 마우스 오른쪽 클릭한 후, Add To Library를 선택하면 된다. 참 쉽죠~잉?
3. 테스트하고자 하는 ActionScript 클래스를 만든다.
net.kjunine.test.sample.Sample.as
package net.kjunine.test.sample
{
public class Sample
{
public static function sum(values:Array):Number
{
var sum:Number = 0;
for (var i:int = 0; i < values.length; i++)
{
sum += parseInt(values[i]);
}
return sum;
}
}
}
Sample 클래스에 배열을 파라메터로 받아들여서 그 배열의 모든 엘리먼트들의 합을 구해서 반환하는 sum이라는 메소드를 만들어 보았다.
4. 방금 만든 ActionScript 클래스를 테스트할 TestCase 클래스를 만든다.
먼저 테스트 소스가 들어갈 test 폴더를 만들고 그 안에 폴더를 추가해 src와 같은 패키지 구조로 만들어 준다. 그리고 메뉴에서 Project > Properties를 선택해서 classpath 탭을 선택하고 방금 만든 test 폴더를 클래스패스에 추가한다. (지금처럼 소스와 테스트를 폴더로 분리하는 것이 바람직한 방법이다.)
net.kjunine.test.sample.SampleTest.as
package net.kjunine.test.sample
{
import flexunit.framework.TestCase;
public class SampleTest extends TestCase
{
public function testSum():void
{
var values:Array = new Array('8', '20', '10', '7', '15');
var actual:Number = Sample.sum(values);
var expected:Number = 60;
assertEquals(expected, actual);
}
}
}
TestCase를 상속받은 SampleTest 클래스를 만들어서 Sample.sum() 메소드를 테스트한다. TestCase 클래스는 JUnit처럼 다양한 assert 메소드들을 제공한다.
5. 테스트용 Main.mxml을 만든다.
net.kjunine.test.Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:flexui="flexunit.flexui.*" creationComplete="this.init();">
<mx:Script>
<![CDATA[
import flexunit.framework.TestSuite;
import net.kjunine.test.sample.SampleTest;
private function init():void {
var test:TestSuite = new TestSuite();
test.addTestSuite(SampleTest);
testRunner.test = test;
testRunner.startTest();
}
]]>
</mx:Script>
<flexui:TestRunnerBase id="testRunner" />
</mx:Application>
TestRunnerBase와 TestSuite가 사용된다. 테스트를 더 추가하고 싶으면 다른 테스트 클래스를 TestSuite.addTestSuite() 메소드로 추가해주기만 하면 된다.
예제의 모든 내용을 만들었다. 그러면 프로젝트 구조는 위와 같을 것이다.
6. 테스트를 실행한다.
FlashDevelop에서 프로젝트를 실행하는 것은 메뉴에서 Project > Test Movie를 선택하거나 단축키 F5를 누르면 된다. 그러나 실행하기 전에 test 폴더의 Main.mxml 파일이 실행되도록 하자.
위 그림과 같이 test 폴더의 Main.mxml 파일에서 마우스 오른쪽 클릭한 후 Always Compile을 선택한다. 이렇게 하면 Test Movie를 실행했을 때 test 폴더의 Main.mxml 파일이 실행될 것이다. (만약 다시 src 폴더의 Main.mxml 파일이 실행되게 하려면 src 폴더의 Main.mxml 파일에서 같은 방법대로 하면 된다.)
이제 실행해보자. 위 그림과 같이 테스트가 성공하였는가? 그리고 UI가 정말 이쁘지 않은가? ^-^ 화면 중간에 보이는 드롭다운 박스의 옵션을 선택해서 리스트에 보일 테스트 결과를 변경할 수 있다.
방금 만든 프로젝트 파일들을 압축해서 올렸다. 참고하시라.
이제 FlexUnit로 Flex에서 단위 테스트를 할 수 있게 되었다. 그 동안 ActionScript 클래스를 테스트 해보기 위해서 trace()를 남발했었는데 이제부터는 테스트를 작성해서 테스트하면 안심할 수 있을 것이다.
'개발 > 플래시' 카테고리의 다른 글
| 기본 윈도우 크롬을 사용하지 않는(chromeless) 에어(AIR) 어플리케이션 만들기 (0) | 2009/10/07 |
|---|---|
| FlexUnit - Flex(플렉스) 단위 테스트 프레임워크 (0) | 2009/09/12 |

flex-unit.zip
Prev
RSS FEED
