[javascript] Karma vs 테스트 프레임 워크 Jasmine, Mocha, QUnit [닫기]
몇 가지 질문 :
답변
Karma는 브라우저 테스트 러너입니다.
기본적으로 브라우저에는 테스트 파일로드, 실행 및 결과보고라는 개념이 기본적으로 없습니다. 업장이하는 일은 (거의) :
- 테스트 할 “클라이언트 측”자바 스크립트 파일을 제공하기 위해 작은 웹 서버 시작 (1)
- “클라이언트 측”자바 스크립트 파일을 테스트 (또는 자주 호출되는 사양)와 함께 제공합니다 (2).
- 테스트를 위해 자바 스크립트 코드를 실행할 사용자 정의 웹 페이지를 제공합니다 (3).
- 이 페이지를로드하려면 브라우저를 시작하십시오 (4).
- 테스트 결과를 서버에보고합니다 (5).
- 그런 다음 카르마는 결과를 텍스트 파일, 콘솔, CI 서버가 좋아하는 모든 것에 다시보고 할 수 있습니다.
각 부분을 보면 :
(1) 해당 파일은 실제 js 파일입니다. 카르마에게로드하는 방법을 알려줄 것입니다. requirejs를 사용하는 경우 카르마 플러그인이 있으며 일부 구성이 필요합니다.
(2) 이러한 테스트는 다양한 Javascript 테스트 프레임 워크 (Jasmine, QUnit, Mocha)로 작성 될 수 있습니다. 이것은 브라우저에서 실행되는 JS 코드입니다.
(3) 사용자 정의 웹 페이지는 테스트 프레임 워크마다 약간 씩 다릅니다. 이것이 카르마가 다른 프레임 워크를위한 플러그인을 가지고있는 이유입니다.
(4) Karma는 많은 브라우저 (FF, Chrome 또는 PhantomJ와 같은 헤드리스 브라우저)에서 페이지를 시작할 수 있습니다.
(5) 카르마에 대한보고는 다시 프레임 워크에 의존하며 카르마 플러그인을 처리합니다.
따라서 귀하의 질문에 대답하십시오 :
- Java에서 대부분의 사람들은 테스트를 작성하고 실행하기위한 프레임 워크 인 JUnit을 사용하지만 테스트가 실행되는 환경과 테스트 보고서가 집계되는 환경을 차별화하는 데는 문제가 없습니다. 카르마는 JUnit Suite와 JUnit TestRunner 사이의 누락 된 부분입니다.
- 네, 카르마가 “손으로”하는 모든 작업을 수행 할 수 있습니다. 하나의 프레임 워크 (jasmine, qunit, mocha)를 선택하고 지침을 따르십시오. 카르마의 장점은 표준 설정을 사용하는 경우 즉시 사용 가능한 솔루션을 제공한다는 것입니다.
- Karma는 단위 테스트 (jasmine / qunit / 무엇이든)와 통합 테스트 (웹 드라이버와 같은 다른 API를 사용하여 브라우저 구동) 모두에 사용할 수 있습니다
답변
차이점을 이해하는 한 가지 짧은 방법 :
일반 Jasmine / Mocha로 테스트하는 사람들은 Node 가상 머신으로 모든 코드를 실행하고있을 가능성이 높습니다.
Karma를 기존의 선택한 프레임 워크 위에 믹스에 추가하면 다른 브라우저의 엔진으로 테스트 스위트가 실행됩니다.
이렇게하면 브라우저 환경에서 얻을 수있는 약간의 추가 사항을 얻을 수 있습니다. DOM 관련 코드를 테스트하는 것이 더 쉬울 것이지만 파일 시스템 / 셸 액세스와 같은 노드 엔진이 제공하는 추가 리소스를 포기할 것입니다
답변
Karma를 디자인 한 사람의 논문은 기존 솔루션을 설명하고 솔루션을 비교하고 Karma 자체를 설명하는 데 매우 유익했습니다.
https://github.com/karma-runner/karma/blob/master/thesis.pdf
요약 : Karma는 테스트 러너입니다. Karma는 TDD / BDD 개발주기를 향상시키기 위해 다른 테스트 러너에 이점이 있습니다. 파일을 “감시”하므로 변경 사항을 저장할 때 Karma는 테스트를 실행하기 위해 컨텍스트를 웹 브라우저로 전환하지 않고 테스트를 즉시 실행하고 다시보고합니다.
요컨대, 질문은 Karma AND Jasmine 또는 Mocha 또는 QUnit이어야합니까?