2012-09-28 2 views
7

저는 Windows 8 앱을 작성하고 단위 테스트를 작성합니다. Windows 8 환경에서 어떻게 자동화 된 방식으로 실행할 수 있습니까?Windows 8 HTML5 앱의 단위 테스트를 자동화하는 방법은 무엇입니까?

Windows 8 환경이나 DOM에 의존하지 않고 수퍼 단순 JavaScript 파일을 작성하면 Node.js를 사용하여 명령 줄에서 단위 테스트를 수행 할 수 있습니다. 이것은 매우 빠릅니다 (1 초 미만).

DOM을 사용해야하고 DOM 사용량이 너무 많지 않으면 Node.js에서 jsdom을 사용하여 동일한 설정과 속도를 얻을 수 있습니다.

하지만 jsdom은 불완전하며 종종 WinJS 기본 라이브러리 (예 : WinJS.Promise) 또는 Windows.* 열거 형과 같은 기본 Windows 8 기능을 사용하려고합니다. 그리고 이상적으로는 내 앱이 실제로 실행될 동일한 JS 엔진과 DOM 환경에서 테스트해야합니다.

이상적으로는 테스트 러너가 필요합니다. 실제 DOM을 사용하여 일부 단위 테스트를 실행할 수있는 간단한 Windows 8 HTML5 컨테이너 WinJS 및 Windows 런타임 API에 액세스 할 수 있습니다. 빌드 프로세스에 통합하려면 결과를 명령 줄 (stdout, stderr)에보고하고 성공 또는 실패 여부에 따라 테스트 러너의 리턴 코드를 변경하는 기능이 필요합니다. 또한 완전히 자동화되고 백그라운드에서 실행할 수 있어야하며 매우 빠릅니다 (10 초 미만).

저는 WebKit 용 도구가 있다는 것을 알고 있습니다. PhantomJS. Windows Runtime HTML5 환경에 그런 것이 있습니까? 그렇지 않다면 이와 비슷한 것을 만들기 위해 어떤 API를 조사해야합니까?

답변

10

현재 Win8/WinJS 테스트 스위트를 헤드리스 방식으로 실행할 방법이 없습니다. WinJS 응용 프로그램에 필요한 런타임은 전체 WinJS 응용 프로그램을 실행하지 않고 자체적으로 실행할 수 없습니다.

테스트를 실행하는 가장 좋은 방법은 솔루션에서 별도의 WinJS 프로젝트를 만들어 테스트를 실행하는 것입니다.

크리스토퍼 Bennage 여기에 기본 세트까지, 설명하는 블로그 게시물이 있습니다 http://dev.bennage.com/blog/2012/08/15/unit-testing-winjs/

을 그리고 난 더 길 아래로 조금 머리를 몇 블로그 게시물이 있습니다

http://lostechies.com/derickbailey/category/winjs/

http://lostechies.com/derickbailey/2012/08/17/asynchronous-unit-tests-with-mocha-promises-and-winjs/

http://lostechies.com/derickbailey/2012/08/21/a-winjs-specrunner-automating-script-tag-insertion-for-unit-tests/

당신이 만약 테스트를 위해 별도의 프로젝트를 실행하는 아이디어가 마음에 들지 않거나 Jasmine이나 Mocha 대신 QUnit을 원할 경우 QUnit-Metro : http://qunitmetro.github.com/QUnitMetro/을 확인하십시오. 실제 응용 프로그램과 함께 프로젝트에서 실행되며 상황에 맞는 메뉴를 제공합니다 개발 모드에서 현재 페이지에 대한 테스트를 실행합니다.

저는 QUnit의 팬이거나 QUnit-Metro가 인 페이지로 작동하는 방식이 아닙니다. 그러나 별도의 프로젝트가 마음에 들지 않는다면 적합하다고 생각할 수도 있습니다.

희망이 있습니다.

관련 문제