많은 JavaScript 단위 테스트 및 테스트 도구를 살펴 보았지만 완전히 TDD를 준수하는 데 적합한 옵션을 찾지 못했습니다. 그렇다면 TDD를 완벽하게 준수하는 JavaScript 단위 테스트 도구가 있습니까?
많은 JavaScript 단위 테스트 및 테스트 도구를 살펴 보았지만 완전히 TDD를 준수하는 데 적합한 옵션을 찾지 못했습니다. 그렇다면 TDD를 완벽하게 준수하는 JavaScript 단위 테스트 도구가 있습니까?
답변:
Karma는 Node.js로 빌드 된 JavaScript 테스트 실행기이며 단위 테스트 용입니다.
각도기는 엔드 투 엔드 테스트 용이며 Selenium 웹 드라이버를 사용하여 테스트를 진행합니다.
둘 다 Angular 팀에 의해 만들어졌습니다. 원하는 어설 션 라이브러리를 사용할 수 있습니다.
스크린 캐스트 : Karma 시작하기
관련 :
찬성 :
단점 :
mocha.js의 기능, 강점 및 약점에 대해 언급 할 자격이 없지만 JS 커뮤니티를 신뢰하는 누군가가 추천했습니다.
웹 사이트에서보고 한 기능 목록 :
이것은 더 이상에, 리디렉션 존재하지 sequential.js 대신
Yolpo는 자바 스크립트 실행을 시각화하는 도구입니다. Javascript API 개발자는 API를 보여주고 알리기 위해 사용 사례를 작성하는 것이 좋습니다. 이러한 사용 사례는 회귀 테스트의 기초를 형성합니다.
ES2015에 대한 지원 기능이 내장 된 미래형 테스트 러너. JavaScript는 단일 스레드이지만 Node.js의 IO는 비동기 특성으로 인해 병렬로 발생할 수 있습니다. AVA는이를 활용하여 테스트를 동시에 실행하며, 특히 IO 무거운 테스트에 유용합니다. 또한 테스트 파일은 별도의 프로세스로 병렬로 실행되므로 각 테스트 파일에 대해 더 나은 성능과 격리 된 환경을 제공합니다.
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)
찬성 :
단점 :
* TestSwarm은 Continuous Integration 서버이며 Buster.js에 대해 별도의 CI 서버가 필요합니다. 그러나 xUnit XML 보고서를 출력하므로 Hudson , Bamboo 와 쉽게 통합 할 수 있어야합니다. 또는 다른 CI 서버 합니다.
https://github.com/jquery/testswarm
TestSwarm은 공식적으로 더 이상 GitHub 웹 페이지에 명시된대로 개발 중이 아닙니다. Karma, browserstack-runner 또는 Intern을 권장합니다.
이는 Ruby 또는 Ruby on Rails에 익숙한 개발자에게 관심을 가질 수있는 행동 중심 프레임 워크입니다 (아래 인용 참조). 구문은 RSpec을 기반으로합니다. Rails 프로젝트에서 테스트에 사용되는 을 합니다.
Jasmine 사양은 html 페이지 (qUnit 방식) 또는 테스트 러너 (Karma)에서 실행할 수 있습니다.
Jasmine은 JavaScript 코드를 테스트하기위한 행동 중심 개발 프레임 워크입니다. 다른 JavaScript 프레임 워크에 의존하지 않습니다. DOM이 필요하지 않습니다.
이 테스트 프레임 워크에 대한 경험이 있다면 더 많은 정보를 제공하십시오. :)
프로젝트 홈 : http://jasmine.github.io/
QUnit은 브라우저에서 JavaScript를 테스트하는 데 집중하면서 개발자에게 최대한의 편의를 제공합니다. 사이트에서 흐림 :
QUnit은 강력하고 사용하기 쉬운 JavaScript 단위 테스트 스위트입니다. jQuery, jQuery UI 및 jQuery Mobile 프로젝트에서 사용되며 일반적인 JavaScript 코드를 테스트 할 수 있습니다.
QUnit은 TestSwarm과 일부 이력을 공유합니다 (위).
QUnit은 원래 John Resig가 jQuery의 일부로 개발했습니다. 2008 년에는 자체 홈, 이름 및 API 설명서가 제공되어 다른 사람들도 단위 테스트에 사용할 수 있습니다. 당시에는 여전히 jQuery에 의존했습니다. 2009 년의 재 작성으로 QUnit은 완전히 독립형으로 실행됩니다. QUnit의 어설 션 방법은 QUnit의 영향을받는 CommonJS Unit Testing 사양을 따릅니다.
프로젝트 홈 : http://qunitjs.com/
또 다른 훌륭한 도구는 Test-Driven JavaScript Development 의 저자 인 Christian Johansen의 sinon.js 입니다. 스스로 설명하는 것이 가장 좋습니다 :
JavaScript를위한 독립형 테스트 스파이, 스텁 및 모의. 어떤 단위 테스트 프레임 워크와도 종속성이 없습니다.
인턴 웹 사이트 이 목록에있는 다른 테스트 프레임 워크에 대한 직접적인 기능 비교를 제공합니다. 다른 JavaScript 기반 테스트 시스템보다 많은 기능을 즉시 제공합니다.
새롭지 만 매우 강력한 테스트 프레임 워크 또한 스냅 샷 기반 테스트를 허용하므로 테스트 속도가 향상되고 테스트 측면에서 새로운 역학이 생깁니다.
대화 중 하나를 확인하십시오. https://www.youtube.com/watch?v=cAKYQpTC7MA
보세요 JavaScript 단위 테스트를위한 프레임 워크 독립 하네스이며 Dojo 종속성이없는 DOH (Dojo Object Harness) 단위 테스트 프레임 워크 를 . Dojo Objective Harness를 사용하여 Web 2.0 애플리케이션을 테스트하는 Unit에 대한 설명이 있습니다 .
UI 테스트를 자동화하려면 (많은 개발자의 아픈 점) — doh.robot을 확인하십시오 (임시 다운 업데이트 : 기타 링크 http://dojotoolkit.org/reference-guide/util/dohrobot.html ) 및 dijit를 확인하십시오. .robotx (임시 다운) . 후자는 합격 테스트를 위해 설계되었습니다. 최신 정보:
참조 된 기사는이를 사용하는 방법, 마우스 및 / 또는 키보드를 사용하여 UI와 상호 작용하는 사용자를 에뮬레이트하는 방법 및 테스트 세션을 기록하는 방법을 설명하여 나중에 자동으로 "재생"할 수 있습니다.
JavaScript 단위 테스트를위한 테스트 러너 인 Chutzpah라는 오픈 소스 프로젝트를 만들었습니다. Chutzpah를 사용하면 명령 줄과 Visual Studio 내부에서 JavaScript 단위 테스트를 실행할 수 있습니다. 또한 TeamCity 연속 통합 서버에서의 실행을 지원합니다.
Wikipedia 항목의 JavaScript 섹션 인 List of Unit Testing Frameworks 는 사용 가능한 선택 목록을 제공합니다. 클라이언트 측, 서버 측 또는 둘 다에서 작동하는지 여부를 나타냅니다.
Google이 공개 한 JavaScript 테스트 프레임 워크 : https://github.com/google/gjstest
- 브라우저를 실행할 필요없이 테스트 시작 및 실행 시간이 매우 빠릅니다.
- 테스트 통과 및 실패시 모두 깨끗하고 읽기 쉬운 출력입니다.
- 브라우저 기반의 테스트 러너JS가 변경 될 때마다 간단하게 새로 고칠 수 .
- C ++ 용 Google 테스트 와 유사한 스타일 및 의미 .
- Google C ++ Mocking Framework 기반의 스타일 및 의미를 가진 최소 상용구 코드 (예 : no
$tearDown
또는$verifyAll
) 가 필요한 내장형 모의 프레임 워크입니다 .
현재 Windows 용 바이너리가 없습니다.
우리는 현재 Pavlov 및 JSTestDriver와 함께 Qunit을 사용하고 있습니다. 이 접근법은 우리에게 잘 작동합니다.
당신은 전문가로서 "실제 브라우저에서 실행"을 가지고 있지만, 내 경험상 그것은 느리기 때문에 사기입니다. 그러나 이것이 가치있는 것은 브라우저 이외의 대안에서 충분한 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의 일부인 단위 테스팅 프레임 워크에 관심이있을 수 있지만 상당히 포괄적 인 툴 체인이 있습니다.
온라인 버전의 testrunner를 사용해보십시오 . 힌트 : 왼쪽 상단의 회색 화살표를 누르십시오 (보다 명확해야 함). 선택한 테스트를 실행하는 "재생"버튼입니다.
단위 테스트를 정의 할 수있는 JS 클래스에 대한 자세한 내용은 온라인 API 뷰어를 참조하십시오. .
자동 UI 테스트 (Selenium RC 기반)는 시뮬레이터 프로젝트를 확인하십시오 .
Java와 Javascript 코드 생성기 ST-JS ( http://st-js.org ) 에 JUnit 통합을 추가했습니다 . 프레임 워크는 테스트 된 코드 및 단위 테스트 모두에 대해 해당 Javascript를 생성하여 코드를 다른 브라우저로 보냅니다.
단위 테스트 러너가 필요한 http 포트를 열고 테스트가 완료되면 서버를 닫으므로 별도의 서버가 필요하지 않습니다. 프레임 워크는 Java 스택 추적을 조작하여 실패한 어설 션이 JUnit Eclipse 플러그인에 올바르게 표시되도록합니다. 다음은 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;
}
}
MochiKit 에는 SimpleTest라는 테스트 프레임 워크가 있습니다. 다음 은 원래 작성자 의 블로그 게시물입니다 .