Karma vs 테스트 프레임 워크 Jasmine, Mocha, QUnit [닫기]


258

몇 가지 질문 :

  • Karma와 테스트 프레임 워크 X (Jasmine, Mocha, QUnit)는 서로 어떤 관련이 있습니까?
  • Java 세계에서 동등한 프레임 워크는 무엇입니까? Jasmine, Mocha, QUnit이 jUnit / TestNG와 같다고 가정합니다. 카르마는 어때?
  • Karma없이 테스트 프레임 워크 X (예 : Jasmine)를 실행할 수 있습니까?
  • Karma는 단위 테스트 또는 통합 / e2e 테스트입니까? 이 기준 도시 단위 시험을위한,하지만 이것은 E2E 테스트 인 것을 특징으로하는 방법.

답변:


419

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를 사용하여 브라우저 구동) 모두에 사용할 수 있습니다

59
이것은 블로그 게시물이나 다른 것이 필요합니다.
Willa

Karma는 많은 브라우저 (FF, Chrome 또는 PhantomJs와 같은 헤드리스 브라우저)에서 페이지를 시작할 수 있습니다. 재스민도 그렇습니까? 많은 프레임 워크에서 테스트하고 conf js에서 해당 설정을 선택할 수 있습니다
Wang'l Pakhrin

1
@ Wang'lPakhrin 물론 모든 브라우저에서 jasmine을 사용할 수 있습니다. 내가 의미하는 바는 기술적으로 업장이 테스트하려는 브라우저를 시작할 수 있다는 것입니다. 글을 쓰는 시점에서 Jasmine은 실제로 브라우저를 시작한 것에 대해 책임을지지 않았습니다 (아직 그렇게 생각하지 않습니다).
phtrivier


1
@Willa이 답변을 기반으로 YouTube 동영상을 만들었습니다. youtube.com/watch?v=bJc078szrZA :)
bersling

70

차이점을 이해하는 한 가지 짧은 방법 :

일반 Jasmine / Mocha로 테스트하는 사람들은 Node 가상 머신으로 모든 코드를 실행하고있을 가능성이 높습니다.

Karma를 기존의 선택한 프레임 워크 위에 믹스에 추가하면 다른 브라우저의 엔진으로 테스트 스위트가 실행됩니다.

이렇게하면 브라우저 환경에서 얻을 수있는 약간의 추가 사항을 얻을 수 있습니다. DOM 관련 코드를 테스트하는 것이 더 쉬울 것이지만 파일 시스템 / 셸 액세스와 같은 노드 엔진이 제공하는 추가 리소스를 포기할 것입니다


34

Karma를 디자인 한 사람의 논문은 기존 솔루션을 설명하고 솔루션을 비교하고 Karma 자체를 설명하는 데 매우 유익했습니다.

https://github.com/karma-runner/karma/blob/master/thesis.pdf

요약 : Karma는 테스트 러너입니다. Karma는 TDD / BDD 개발주기를 향상시키기 위해 다른 테스트 러너에 이점이 있습니다. 파일을 "감시"하므로 변경 사항을 저장할 때 Karma는 테스트를 실행하기 위해 컨텍스트를 웹 브라우저로 전환하지 않고 테스트를 즉시 실행하고 다시보고합니다.

요컨대, 질문은 Karma AND Jasmine 또는 Mocha 또는 QUnit이어야합니까?


2
링크에서 간단한 요약을 해 주시겠습니까? 답을 향상시킵니다
winner_joiner

1
업장이 Jest 테스트를 실행할 수 있습니까?
SuperUberDuper

재스민에서도 볼 수 있습니까? 나는 그렇게 생각하지만 조용히 기억하지 않습니다.
Wang'l Pakhrin

@ Wang'l Pakhrin 나는 Jasmine이 시계 기능을 가지고 있다는 것을 모른다. 나는 단지 nodemon을 사용한다. "nodemon --exec jasmine"파일을 저장할 때마다 테스트가 실행됩니다.
snowfrogdev

논문은 Jasmine을 언급하지 않습니다.
Carl G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.