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) expectedactual이 같으면 성공
  • assertTrue(a) atrue이면 성공
  • assertFalse(a) afalse이면 성공
설정과 해체(Setup and tear down)

테스트 전후에 코드를 실행하려면 TestCase에서 setuptearDown 함수를 오버라이드하세요.

  • 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

더 알아보기