질문 : TDD 용 JavaScript 단위 테스트 도구
많은 JavaScript 단위 테스트 및 테스트 도구를 조사하고 고려했지만 TDD를 완전히 준수하는 데 적합한 옵션을 찾지 못했습니다. 그렇다면 TDD를 완전히 준수하는 JavaScript 단위 테스트 도구가 있습니까?
답변
Karma는 Node.js로 빌드되고 단위 테스트를위한 JavaScript 테스트 실행기입니다.
Protractor는 종단 간 테스트 용이며 Selenium Web Driver를 사용하여 테스트를 진행합니다.
둘 다 Angular 팀에서 만들었습니다. 어느 쪽이든 원하는 어설 션 라이브러리를 사용할 수 있습니다.
Screencast : Karma 시작하기
관련 :
장점 :
- node.js를 사용하므로 Win / OS X / Linux와 호환됩니다.
- PhantomJS로 브라우저 또는 헤드리스에서 테스트 실행
- 한 번에 여러 클라이언트에서 실행
- 브라우저 실행, 캡처 및 자동 종료 옵션
- 개발 컴퓨터에서 또는 개별적으로 서버 / 클라이언트를 실행하는 옵션
- 명령 줄에서 테스트 실행 (ant / maven에 통합 가능)
- 테스트 xUnit 또는 BDD 스타일 작성
- 여러 JavaScript 테스트 프레임 워크 지원
- 저장시 자동 실행 테스트
- 프록시 요청 교차 도메인
- 사용자 정의 가능 :
- 다른 테스트 프레임 워크를 래핑하도록 확장합니다 (Jasmine, Mocha, QUnit 내장).
- 자신의 주장 / 반박
- Reporters
- 브라우저 실행기
- WebStorm 용 플러그인
- Netbeans IDE에서 지원
단점 :
- NodeJS (즉, 백엔드) 테스트를 지원하지 않습니다.
- Eclipse 용 플러그인 없음 (아직)
- 이전 테스트 결과 기록 없음
mocha.js
mocha.js의 기능, 강점 및 약점에 대해 언급 할 자격이 전혀 없습니다.하지만 JS 커뮤니티에서 제가 신뢰하는 사람이 추천 한 것뿐입니다.
웹 사이트에서보고 한 기능 목록 :
- 브라우저 지원
- 약속을 포함한 간단한 비동기 지원
- 테스트 커버리지보고
- 문자열 차이 지원
- 테스트 실행을위한 javascript # API
- CI 지원 등을위한 적절한 종료 상태
- non-ttys에 대한 색상을 자동 감지하고 비활성화합니다.
- 포착되지 않은 예외를 올바른 테스트 케이스에 매핑
- 비동기 테스트 시간 초과 지원
- 테스트 별 제한 시간
- 으르렁 거리는 알림 지원
- 테스트 기간보고
- 느린 테스트를 강조
- 파일 감시자 지원
- 전역 변수 누출 감지
- 선택적으로 정규 표현식과 일치하는 테스트 실행
- 활성 루프에서 "중단"을 방지하기위한 자동 종료
- 쉽게 메타 생성 도구 모음 및 테스트 케이스
- mocha.opts 파일 지원
- 테스트 실행을 필터링하기위한 클릭 가능한 제품군 제목
- 노드 디버거 지원
- done ()에 대한 여러 호출을 감지합니다.
- 원하는 어설 션 라이브러리 사용
- 9 명 이상의 리포터와 번들로 제공되는 확장 가능한보고
- 확장 가능한 테스트 DSL 또는 "인터페이스"
- 전, 후, 각 전, 각 후크 후
- 임의의 트랜스 파일러 지원 (커피 스크립트 등)
- TextMate 번들
yolpo
더 이상 존재하지 않으며 대신 sequential.js로 리디렉션됩니다.
Yolpo는 자바 스크립트 실행을 시각화하는 도구입니다. Javascript API 개발자는 API를 보여주고 알리는 사용 사례를 작성하는 것이 좋습니다. 이러한 사용 사례는 회귀 테스트의 기초를 형성합니다.
AVA
ES2015를 기본적으로 지원하는 미래형 테스트 실행기. JavaScript는 단일 스레드이지만 Node.js의 IO는 비동기 특성으로 인해 병렬로 발생할 수 있습니다. AVA는이를 활용하고 테스트를 동시에 실행하므로 IO가 많은 테스트에 특히 유용합니다. 또한 테스트 파일은 별도의 프로세스로 병렬로 실행되므로 각 테스트 파일에 대해 더 나은 성능과 격리 된 환경을 제공합니다.
- 최소 및 빠름
- 간단한 테스트 구문
- 동시에 테스트 실행
- 원자 테스트 작성 강제
- 암시 적 글로벌 아님
- 각 테스트 파일에 대한 격리 된 환경
- ES2015로 테스트 작성
- 약속 지원
- 생성기 기능 지원
- 비동기 기능 지원
- 관찰 가능한 지원
- 향상된 어설 션
- 선택적 TAP 출력
- 스택 추적 정리
Buster.js
Node.js로 빌드 된 JavaScript 테스트 실행기. 매우 모듈 식이며 유연합니다. 자체 어설 션 라이브러리와 함께 제공되지만 원하는 경우 자체적으로 추가 할 수 있습니다. 어설 션 라이브러리 는 분리되어 있으므로 다른 테스트 실행자와 함께 사용할 수도 있습니다. assert(!...)
또는 expect(...).not...
을 사용하는 대신 refute(...)
를 사용합니다.
브라우저 JavaScript 테스트 툴킷. 브라우저 자동화 (예 : JsTestDriver), QUnit 스타일 정적 HTML 페이지 테스트, 헤드리스 브라우저 (PhantomJS, jsdom 등)에서 테스트하는 등의 브라우저 테스트를 수행합니다. 개요를 보십시오!
Node.js 테스트 툴킷. 동일한 테스트 케이스 라이브러리, 어설 션 라이브러리 등을 얻습니다. 이것은 하이브리드 브라우저 및 Node.js 코드에도 좋습니다. Buster.JS로 테스트 케이스를 작성하고 Node.js와 실제 브라우저에서 실행하세요.
스크린 캐스트 : Buster.js 시작하기 (2:45)
장점 :
- node.js를 사용하므로 Win / OS X / Linux와 호환됩니다.
- PhantomJS로 브라우저 또는 헤드리스에서 테스트 실행 (곧)
- 한 번에 여러 클라이언트에서 실행
- NodeJS 테스트 지원
- 개발 컴퓨터에서 서버 / 클라이언트를 실행할 필요가 없습니다 (IE 필요 없음).
- 명령 줄에서 테스트 실행 (ant / maven에 통합 가능)
- 테스트 xUnit 또는 BDD 스타일 작성
- 여러 JavaScript 테스트 프레임 워크 지원
- 주석 처리 대신 테스트 연기
- SinonJS 내장
- 저장시 자동 실행 테스트
- 프록시 요청 교차 도메인
- 사용자 정의 가능 :
- 다른 테스트 프레임 워크를 래핑하도록 확장 (JsTestDriver 내장)
- 자신의 주장 / 반박
- 리포터 (xUnit XML, 기존 도트, 사양, 탭, TeamCity 및 기타 기본 제공)
- 브라우저 테스트를 실행하는 데 사용되는 HTML 사용자 지정 / 교체
- TextMate 및 Emacs 통합
단점 :
- 베타 버전이므로 버그가있을 수 있습니다.
- Eclipse / IntelliJ 용 플러그인 없음 (아직)
- TestSwarm *과 같은 os / browser / version별로 결과를 그룹화하지 않습니다. 그러나 테스트 결과에서 브라우저 이름과 버전을 인쇄합니다.
- TestSwarm과 같은 이전 테스트 결과 기록 없음 *
- 2014 년 5 월 현재 Windows에서 완전히 작동하지 않습니다.
* TestSwarm은 Continuous Integration 서버이기도하지만 Buster.js 용으로 별도의 CI 서버가 필요합니다. 그러나 xUnit XML 보고서를 출력하므로 Hudson , Bamboo 또는 기타 CI 서버와 쉽게 통합 할 수 있어야합니다.
TestSwarm
https://github.com/jquery/testswarm
TestSwarm은 공식적으로 GitHub 웹 페이지에 명시된대로 더 이상 활발하게 개발되지 않습니다. 그들은 Karma, browserstack-runner 또는 Intern을 추천합니다.
Jasmine
이것은 Ruby 또는 Ruby on Rails에 익숙한 개발자에게 관심을 가질 수있는 동작 중심 프레임 워크 (아래 인용문 참조)입니다. 구문은 Rails 프로젝트에서 테스트하는 데 사용되는 RSpec을 기반으로합니다.
Jasmine 사양은 html 페이지 (qUnit 형식) 또는 테스트 실행기 (Karma)에서 실행할 수 있습니다.
Jasmine은 JavaScript 코드를 테스트하기위한 동작 중심 개발 프레임 워크입니다. 다른 JavaScript 프레임 워크에 의존하지 않습니다. DOM이 필요하지 않습니다.
이 테스트 프레임 워크에 대한 경험이 있으시다면 더 많은 정보를 제공해주세요 :)
프로젝트 홈 : http://jasmine.github.io/
QUnit
QUnit은 브라우저에서 JavaScript를 테스트하는 데 중점을 두면서 개발자에게 최대한의 편의를 제공합니다. 사이트에서 Blurb :
QUnit은 강력하고 사용하기 쉬운 JavaScript 단위 테스트 제품군입니다. jQuery, jQuery UI 및 jQuery Mobile 프로젝트에서 사용되며 모든 일반 JavaScript 코드를 테스트 할 수 있습니다.
QUnit은 TestSwarm (위)과 몇 가지 기록을 공유합니다.
QUnit은 원래 John Resig가 jQuery의 일부로 개발했습니다. 2008 년에는 자체 홈, 이름 및 API 문서를 확보하여 다른 사람들이 단위 테스트에도 사용할 수 있도록했습니다. 당시에는 여전히 jQuery에 의존했습니다. 2009 년 재 작성하여 이제 QUnit이 완전히 독립형으로 실행되도록 수정했습니다. QUnit의 주장 방법은 QUnit의 영향을받은 CommonJS 단위 테스트 사양을 따릅니다.
프로젝트 홈 : http://qunitjs.com/
Sinon
또 다른 훌륭한 도구는 Test-Driven JavaScript Development 의 저자 인 Christian Johansen의 sinon.js 입니다. 자신이 가장 잘 설명 :
JavaScript 용 독립형 테스트 스파이, 스텁 및 모의. 단위 테스트 프레임 워크에서 작동하는 종속성은 없습니다.
Intern
Intern 웹 사이트 는이 목록에있는 다른 테스트 프레임 워크와의 직접적인 기능 비교를 제공합니다. 다른 JavaScript 기반 테스트 시스템보다 더 많은 기능을 즉시 제공합니다.
JEST
새롭지 만 매우 강력한 테스트 프레임 워크입니다. 스냅 샷 기반 테스트도 가능하므로 테스트 속도가 빨라지고 테스트 측면에서 새로운 역학이 생성됩니다.
그들의 강연 중 하나를 확인하세요 : https://www.youtube.com/watch?v=cAKYQpTC7MA
더 나은 방법 : 시작하기
출처 : https://stackoverflow.com/questions/300855/javascript-unit-test-tools-for-tdd
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
JavaScript Math, 소수점 둘째 자리로 반올림 하는 방법 (0) | 2021.12.04 |
---|---|
CSS 스크롤바 막대 숨기기 (0) | 2021.12.04 |
객체를 반환하는 ECMAScript 6 화살표(=>) 함수 (0) | 2021.12.03 |
JavaScript에서 for… of 구문을 사용하여 loop counter/index 가져 오기 (0) | 2021.12.01 |
이름이 문자열 일 때 JavaScript 함수를 실행하는 방법 (0) | 2021.11.30 |