TDD용 JavaScript 유닛 테스트 도구
많은 JavaScript 유닛 테스트와 테스트 툴을 검토하고 검토했지만 TDD를 완전히 준수하기 위한 적절한 옵션을 찾을 수 없었습니다.그럼 TDD에 완전히 준거한 JavaScript 유닛 테스트 툴이 있을까요?
카르마 또는 프로젝터
Karma는 Node.js로 빌드된 JavaScript 테스트 실행자로 유닛 테스트용입니다.
프로젝터는 엔드 투 엔드의 테스트용이며, Selenium Web Driver를 사용해 테스트 테스트를 실시합니다.
둘 다 앵글 팀이 만든 거야원하는 모든 어설션 라이브러리를 사용할 수 있습니다.
스크린캐스트: 카르마 시작하기
관련:
장점:
- Node.js를 사용하여 Win/OS X/Linux와 호환 가능
- 팬텀을 사용하여 브라우저 또는 헤드리스에서 테스트 실행JS
- 여러 클라이언트에서 동시에 실행
- 브라우저를 실행, 캡처 및 자동으로 종료하는 옵션
- 개발 컴퓨터에서 또는 별도로 서버/클라이언트를 실행하는 옵션
- 명령줄에서 테스트 실행(개미/매븐에 통합 가능)
- 쓰기 테스트 xUnit 또는 BDD 스타일
- 여러 JavaScript 테스트 프레임워크 지원
- 저장 시 자동 테스트 실행
- 도메인 간 프록시 요청
- 다음 중 하나:
- 다른 테스트 프레임(Jasmin, Mocha, Qunit 내장)으로 확장
- 자신의 주장/반박
- 리포터
- 브라우저 런처
- WebStorm용 플러그인
- NetBeans IDE 지원
단점:
- Node.js(백엔드) 테스트는 지원하지 않습니다.
- Eclipse용 플러그인이 없습니다(아직).
- 이전 테스트 결과 이력 없음
mocha.mocha.mocha.mohtml
mocha.js의 특징, 장점, 단점에 대해 코멘트를 할 자격이 전혀 없지만 JS 커뮤니티에서 신뢰하는 사람이 추천한 것입니다.
웹사이트에서 보고한 기능 목록:
- 브라우저 지원
- 단순한 비동기 지원(약속 포함)
- 테스트 범위 보고서
- 문자열 diff 지원
- 테스트를 실행하기 위한 JavaScript # API
- CI 지원 등의 적절한 종료 상태
- 타이 이외의 색상은 자동 검출 및 비활성화
- 검출되지 않은 예외를 올바른 테스트 케이스에 매핑합니다.
- 비동기 테스트타임아웃 지원
- 테스트 고유의 타임아웃
- growl 알림 지원
- 보고서 테스트 기간
- 느린 테스트 강조
- 파일 워처 지원
- 글로벌 변수 누출 검출
- 필요에 따라 regexp와 일치하는 테스트를 실행합니다.
- 액티브 루프에 의한 「실행」을 방지하기 위한 자동 검출
- 쉽게 메타 생성 가능한 스위트 및 테스트 케이스
- mocha.opts 파일서포트
- 테스트 실행을 필터링할 수 있는 클릭 가능한 제품군 제목
- 노드 디버거 지원
- done()에 대한 여러 콜을 검출합니다.
- 원하는 어설션 라이브러리 사용
- 확장 가능한 보고서, 9개 이상의 리포터와 함께 번들
- 확장 가능한 테스트 DSL 또는 "인터페이스"
- 각 훅 전, 후, 각 훅 전, 후
- 임의의 트랜스필러 지원(스위치 스크립트 등)
- TextMate 번들
욜포
더 이상 존재하지 않습니다.대신 sequential.js로 리다이렉트 됩니다.
Yolpo는 JavaScript 실행을 시각화하는 도구입니다.JavaScript API 개발자는 API를 보여주고 알려주는 사용 사례를 작성할 것을 권장합니다.이러한 활용 사례는 회귀 테스트의 기초를 형성합니다.
아바
ES2015를 지원하는 미래형 테스트 주자.JavaScript는 싱글 스레드이지만 비동기 특성으로 인해 Node.js의 I/O가 병렬로 발생할 수 있습니다.AVA는 이 점을 이용하여 테스트를 동시에 실행합니다.이는 특히 I/O 부하가 높은 테스트에 유용합니다.또한 테스트 파일은 별도의 프로세스로 병렬로 실행되므로 각 테스트 파일에 대해 더 나은 성능과 격리된 환경을 제공할 수 있습니다.
- 최소의 고속
- 간단한 테스트 구문
- 테스트를 동시에 실행하다
- 원자성 테스트 쓰기를 강제합니다.
- 암묵적인 글로벌 없음
- 테스트 파일별로 격리된 환경
- ES2015에서 테스트 작성
- 지원 약속
- 제너레이터 기능 지원
- 비동기 함수 지원
- 눈에 띄는 지원
- 강화된 어설션
- 옵션인 TAP 출력
- 스택 트레이스의 클리닝
버스터.js
Node.js로 빌드된 JavaScript 테스트 러너.모듈러형으로 유연성이 뛰어납니다.자체 어설션 라이브러리와 함께 제공되지만 원하는 경우 자신의 어설션 라이브러리를 추가할 수 있습니다.아사션 라이브러리는 분리되므로 다른 테스트 실행자와 함께 사용할 수도 있습니다.사용하는 대신assert(!...)
★★★★★★★★★★★★★★★★★」expect(...).not...
, 을합니다.refute(...)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
브라우저 JavaScript 테스트 툴킷.브라우저 자동화(think JsTestDriver), Qunit 스타일의 정적 HTML 페이지 테스트, 헤드리스 브라우저 테스트(Phantom)를 통해 브라우저 테스트를 수행합니다.JS, jsdom, ...) 등입니다.개요를 봐주세요!
Node.js는 라이브러리 수 .동일한 테스트 케이스 라이브러리, 어설션 라이브러리 등을 얻을 수 있습니다.Node.js에 대해 설명합니다. 를 작성하다
Buster.JS
Node.js는 Node.js에 있습니다.
스크린캐스트:Buster.js 시작하기 (2:45)
장점:
- Node.js를 사용하여 Win/OS X/Linux와 호환 가능
- 팬텀을 사용하여 브라우저 또는 헤드리스에서 테스트 실행JS(조만간)
- 여러 클라이언트에서 동시에 실행
- Node.js 테스트 지원
- 개발 컴퓨터에서 서버/클라이언트를 실행할 필요가 없다(IE 불필요)
- 명령줄에서 테스트 실행(개미/매븐에 통합 가능)
- 쓰기 테스트 xUnit 또는 BDD 스타일
- 여러 JavaScript 테스트 프레임워크 지원
- 테스트를 코멘트하지 않고 연기하다
- SinonJS 내장
- 저장 시 자동 테스트 실행
- 도메인 간 프록시 요청
- 다음 중 하나:
- 다른 테스트 프레임 워크로 확장(JsTestDriver 내장)
- 자신의 주장/반박
- 리포터(xUnit XML, 기존 닷, 사양, 탭, TeamCity 등 내장)
- 브라우저 테스트 실행에 사용되는HTML 커스터마이즈/바꾸기
- TextMate와 Emacs의 통합
단점:
- 베타판으로 고정되므로 버그가 발생할 수 있습니다.
- Eclipse/IntelliJ용 플러그인이 없습니다(아직).
- TestSwarm*과 같이 OS/브라우저/버전별로 결과를 그룹화하지 않습니다.단, 테스트 결과에서 브라우저 이름과 버전을 출력합니다.
- Test Swarm*과 같은 이전 테스트 결과 이력 없음
- 2014년 5월 현재 윈도우에서 완전히 작동하지 않음
* Test Swarm은 Continuous Integration 서버이기도 합니다.단, 이 서버에는 별도의 CI 서버가 필요합니다.Buster.js
그러나 xUnit XML 보고서는 출력되므로 Hudson, Bampoo 또는 기타 CI 서버와 쉽게 통합할 수 있습니다.
TestSwarm
https://github.com/jquery/testswarm
TestSwarm은 공식적으로 GitHub 웹페이지에 기재된 바와 같이 더 이상 개발되지 않습니다.Karma, browserstack-runner 또는 Internal을 권장합니다.
재스민
이것은 Ruby 또는 Ruby on Rails에 익숙한 개발자들에게 흥미를 줄 수 있는 동작 중심 프레임워크입니다(아래 인용문에 기재되어 있습니다.구문은 레일 프로젝트에서 테스트에 사용되는 RSpec을 기반으로 합니다.
Jasmine 사양은 HTML 페이지(qUnit 방식) 또는 테스트 주자(Karma)에서 실행할 수 있습니다.
Jasmine은 JavaScript 코드를 테스트하기 위한 동작 중심의 개발 프레임워크입니다.다른 JavaScript 프레임워크에 의존하지 않습니다.DOM은 필요 없습니다.
이 테스트 프레임워크에 대한 경험이 있는 경우 자세한 내용을 기입해 주십시오.
프로젝트 홈: http://jasmine.github.io/
그만두다
Qunit은 개발자에게 최대한 편의를 제공하면서 브라우저에서 JavaScript를 테스트하는 데 초점을 맞추고 있습니다.사이트로부터의 설명:
Qunit은 강력하고 사용하기 쉬운 JavaScript 유닛 테스트 스위트입니다.jQuery, jQuery UI 및 jQuery Mobile 프로젝트에서 사용되며 모든 일반 JavaScript 코드를 테스트할 수 있습니다.
Qnit은 Test Swarm(위)과 일부 이력을 공유합니다.
Qunit은 원래 jQuery의 일부로 John Resig에 의해 개발되었습니다.2008년에는 자체 홈, 이름 및 API 문서를 입수하여 다른 사용자가 유닛 테스트에도 사용할 수 있도록 하였습니다.그 당시에는 여전히 jQuery에 의존했다.2009년의 개서에서는, 현재는 Qnit가 완전하게 독립형으로 동작하고 있는 것을 수정했습니다.Qunit의 어설션 방법은 CommonJS Unit Testing 사양을 따르며, 어느 정도 Qunit의 영향을 받았습니다.
프로젝트 홈: http://qunitjs.com/
시논
또 다른 훌륭한 도구는 테스트 구동 자바스크립트 개발의 저자인 Christian Johansen의 sinon.js입니다.그 자신이 가장 잘 설명한 것:
JavaScript용 스탠드아론 테스트 스파이, 스터브 및 모크유닛 테스트 프레임워크에서는 의존관계가 동작하지 않습니다.
인턴
인턴 웹사이트는 이 목록에 있는 다른 테스트 프레임워크와 직접 비교한 기능을 제공합니다.이는 다른 어떤 JavaScript 기반 테스트 시스템보다 더 많은 기능을 제공합니다.
재스트
새롭고 매우 강력한 테스트 프레임워크.스냅숏 베이스의 테스트도 가능하게 되어 테스트 속도가 향상되어 테스트에 관한 새로운 동적인 요소가 생깁니다.
그들의 강연 중 하나를 확인해 보세요.https://www.youtube.com/watch?v=cAKYQpTC7MA
JavaScript 장치 테스트를 위한 거의 프레임워크 독립적인 하니스이며 Dojo 종속성이 없는 DOH(Dojo 객체 하니스) 장치 테스트 프레임워크를 살펴보십시오.Dojo 목표 하니스를 사용하여 Web 2.0 응용 프로그램을 테스트하는 경우 이에 대한 설명이 매우 잘 나와 있습니다.
UI 테스트(많은 개발자의 단점)를 자동화하고 싶은 경우는, doh.robot(일시 정지)를 확인해 주세요. 업데이트: 기타 링크 http://dojotoolkit.org/reference-guide/util/dohrobot.html ) 및 dijit.disclx(다운)를 참조해 주세요.후자는 수용 테스트용으로 설계되어 있습니다.업데이트:
참조된 문서에서는 사용 방법, 마우스 및/또는 키보드를 사용하여 UI와 상호작용하는 사용자를 에뮬레이트하는 방법 및 테스트 세션을 기록하는 방법에 대해 설명합니다.이것에 의해, 나중에 자동적으로 「재생」할 수 있습니다.
Chutzpah - JavaScript 테스트 실행자
저는 자바스크립트 유닛 테스트 주자인 Chutzpah라는 오픈 소스 프로젝트를 만들었습니다.Chutzpah를 사용하면 명령줄과 Visual Studio 내부에서 JavaScript 유닛 테스트를 실행할 수 있습니다.또한 TeamCity 연속 통합 서버에서의 실행도 지원합니다.
Wikipedia 엔트리의 JavaScript 섹션, List of Unit Testing Frameworks에는 사용 가능한 선택사항이 나열됩니다.클라이언트측, 서버측, 또는 양쪽 모두에서 동작하는지를 나타냅니다.
버스터JS
버스터도 있다.테스트 주도형 Javascript 개발 및 Sinon 프레임워크의 저자인 Christian Johansen의 JS.사이트:
Buster.JS는 새로운 JavaScript 테스트 프레임워크입니다.실제 브라우저에서 테스트 실행(JsTestDriver라고 생각)을 자동화하여 브라우저 테스트를 수행하며 Node.js 테스트도 수행합니다.
google-disc-test:
Google에서 출시한 JavaScript 테스트 프레임워크: https://github.com/google/gjstest
- 브라우저를 실행할 필요 없이 테스트 시작 및 실행 시간이 매우 빠릅니다.
- 테스트 통과 및 불합격 시 깨끗하고 판독 가능한 출력.
- JS를 변경할 때마다 간단히 새로 고칠 수 있는 브라우저 기반 테스트 러너입니다.
- C++에 대한 Google 테스트와 유사한 스타일과 의미론.
- 코드를 필요로 삽입 모킹 no " " " " " " " " " " " )
$tearDown
★★★★★★★★★★★★★★★★★」$verifyAll
)는 Google C++ Mocking Framework에 기반한 스타일과 의미론입니다.
현재 Windows용 바이너리가 없습니다.
현재 Qunit을 Pavlov와 JSTestDriver와 함께 사용하고 있습니다.이 접근방식은 우리에게 효과적입니다.
프로로서 「실제 브라우저로 실행」을 실시하고 있습니다만, 제 경험상으로는, 그것은 속도가 느리기 때문에 사기입니다.그러나 브라우저 이외의 대체 솔루션에서 충분한 JS 에뮬레이션이 제공되지 않는 것이 중요합니다.JS가 브라우저 내 테스트만 수행할 정도로 복잡할 수 있지만 고려해야 할 옵션이 몇 가지 더 있을 수 있습니다.
HtmlUnit: "JavaScript 지원(계속 개선되고 있음)이 매우 우수하며, 사용하려는 구성에 따라 Firefox 또는 Internet Explorer를 시뮬레이션하여 매우 복잡한 AJAX 라이브러리에서도 작동할 수 있습니다."에뮬레이션이 충분하다면 브라우저를 구동하는 것보다 훨씬 빠를 것입니다.
하지만 HtmlUnit은 JS를 충분히 지원하지만 당신은 Java를 좋아하지 않나요?그렇다면 다음과 같은 경우가 있습니다.
셀리티:HtmlUnit에서 지원되는 JRuby에서 실행되는 Watir API.
또는 이와 비슷한
Schnell: HtmlUnit의 또 다른 JRuby 래퍼.
물론 HtmlUnit이 충분하지 않고 브라우저를 구동해야 한다면 Watir가 JS를 구동하는 것을 고려할 수 있습니다.
YUI는 테스트 프레임워크도 갖추고 있습니다.이 동영상은 야후!TDD에 관한 많은 기본 사항들이 있지만, 극장은 좋은 소개입니다.
이 프레임워크는 일반적이며 모든 JavaScript 또는 JS 라이브러리에 대해 실행할 수 있습니다.
또한 Dojo, ExtJS 등과 유사하지만 매우 포괄적인 툴 체인을 갖춘 오픈 소스 RIA 프레임워크인 qooxdoo의 일부인 유닛 테스트 프레임워크에도 관심이 있을 수 있습니다.
테스트 러너의 온라인 버전을 시험합니다.힌트: 왼쪽 상단에 있는 회색 화살표를 누릅니다(더 명확하게 해야 합니다).선택한 테스트를 실행하는 "재생" 버튼입니다.
유닛 테스트를 정의할 수 있는 JS 클래스에 대한 자세한 내용은 온라인 API 뷰어를 참조하십시오.
자동 UI 테스트(Selenium RC 기반)는 시뮬레이터 프로젝트를 참조하십시오.
자바스크립트 코드 생성기 ST-JS(http://st-js.org)에 JUnit 통합을 추가하였습니다.프레임워크는 테스트된 코드와 유닛 테스트 모두에 대응하는 Javascript를 생성하여 다른 브라우저로 코드를 전송합니다.
유닛 테스트러너는 필요한http 포트를 열고 테스트가 완료되면 포트를 닫기 때문에 별도의 서버를 사용할 필요가 없습니다.JUnit Eclipse 플러그인에 의해 실패한 어설션이 올바르게 표시되도록 프레임워크는 Java 스택 트레이스를 조작합니다.다음은 jQuery 및 Mockjax의 간단한 예입니다.
@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")
@Scripts({ "classpath://jquery.js",
"classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
@Test
public void myTest() {
$.ajaxSetup($map("async", false));
$.mockjax(new MockjaxOptions() {
{
url = "/restful/fortune";
responseText = new Fortune() {
{
status = "success";
fortune = "Are you a turtle?";
}
};
}
});
$.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
@Override
public void $invoke(Fortune response, String p2, JQueryXHR p3) {
if (response.status.equals("success")) {
$("#fortune").html("Your fortune is: " + response.fortune);
} else {
$("#fortune").html("Things do not look good, no fortune was told");
}
}
});
assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
}
private static class Fortune {
public String status;
public String fortune;
}
}
당신은 env.js를 봐야 합니다.env.js를 사용하여 유닛 테스트를 작성하는 예에 대해서는 제 블로그를 참조하십시오.
MochiKit에는 SimpleTest라는 테스트 프레임워크가 있어 인기를 끌고 있는 것 같습니다.여기 원작자의 블로그 투고가 있습니다.
언급URL : https://stackoverflow.com/questions/300855/javascript-unit-test-tools-for-tdd
'programing' 카테고리의 다른 글
DB에서 설정을 가져오는 함수에서 오류가 발생했습니다. (0) | 2022.10.08 |
---|---|
포틀렛과 서블릿의 차이점은 무엇입니까? (0) | 2022.10.08 |
Symfony 3.4.6 - 10.1.37-MariaDB-0+deb9u1 - 인덱스 열 크기가 너무 큼 (0) | 2022.10.08 |
치명적 오류: 문자열에 대해 [] 연산자가 지원되지 않습니다. (0) | 2022.10.08 |
도커 컨테이너 내부에서 MariaDB를 수행할 수 없습니다. (0) | 2022.10.08 |