10.14 단위 테스트(Unit Testing)
10.14 단위 테스트(Unit Testing)
since Haxe 4.0.0
사용 중단됨(Deprecated): 단위 테스트 API가 Haxe 4에서 표준 라이브러리에서 제거되었습니다. 호환성을 위해 hx3compat 라이브러리에서 계속 사용할 수 있습니다. Haxe 3 호환성(Haxe 3 Compatibility) 참조.
Haxe 표준 라이브러리는 haxe.unit 패키지에서 기본 단위 테스트 클래스를 제공합니다.
새 테스트 케이스 만들기(Creating new test cases)
먼저 haxe.unit.TestCase를 확장하는 새 클래스를 만들고 자체 테스트 메서드를 추가하세요. 모든 테스트 메서드 이름은 "test"로 시작해야 합니다.
class MyTestCase extends haxe.unit.TestCase {
public function testBasic() {
assertEquals("A", "A");
}
}
단위 테스트 실행(Running unit tests)
테스트를 실행하려면 haxe.unit.TestRunner의 인스턴스를 만들어야 합니다. add 메서드로 TestCase를 추가하고 run을 호출해 테스트를 시작합니다.
class Main {
static function main() {
var r = new haxe.unit.TestRunner();
r.add(new MyTestCase());
// 여기에 다른 TestCase 추가
// 마지막으로 테스트 실행
r.run();
}
}
테스트 결과는 다음과 같습니다:
Class: MyTestCase
.
OK 1 tests, 0 failed, 1 success
테스트 함수(Test functions)
haxe.unit.TestCase 클래스는 세 가지 테스트 함수를 제공합니다.
assertEquals(expected, actual)expected와actual이 같으면 성공assertTrue(a)a가true이면 성공assertFalse(a)a가false이면 성공
설정과 해체(Setup and tear down)
테스트 전후에 코드를 실행하려면 TestCase에서 setup과 tearDown 함수를 오버라이드하세요.
setup각 테스트가 실행되기 전에 호출됩니다.tearDown모든 테스트가 실행된 후 한 번 호출됩니다.
class MyTestCase extends haxe.unit.TestCase {
var value:String;
override public function setup() {
value = "foo";
}
public function testSetup() {
assertEquals("foo", value);
}
}
복잡한 객체 비교(Comparing Complex Objects)
복잡한 객체로는 실제 것과 비교할 기대값을 만드는 것이 어려울 수 있습니다. assertEquals가 깊은 비교를 하지 않는 것도 문제가 될 수 있습니다. 이러한 문제를 해결하는 한 가지 방법은 기대값으로 문자열을 사용하고 이를 Std.string으로 변환된 실제 값과 비교하는 것입니다. 아래는 배열을 사용한 사소한 예입니다.
public function testArray() {
var actual = [1,2,3];
assertEquals("[1, 2, 3]", Std.string(actual));
}
단위 테스트 실행(Run unit test)
HXML을 사용해 컴파일 후(Neko와 Node.js에서) 단위 테스트를 실행하는 방법을 보여주는 예입니다.
-p source/main/haxe
-p source/test/haxe
--main your.package.TestRunnerMain
--each
--neko output/neko/test.n
--cmd neko ./output/neko/test.n
--next
--js output/javascript/test.js
--cmd node ./output/javascript/test.js
관련 내용
더 많은 세부 사항은 API 문서의 haxe.unit 패키지를 참조하세요.
출처: Unit Testing