Ginkgo는 표현 사양을 작성하는 데 도움이되도록 GO를위한 성숙한 테스트 프레임 워크입니다. Ginkgo는 Go의 testing
Foundation 위에 구축되며 Gomega Matcher Library로 보완됩니다. Ginkgo와 Gomega는 함께 사양 뒤에 의도를 명확하게 표현할 수있게 해줍니다.
수입 (수입) . "github.com/onsi/ginkgo/v2". "github.com/onsi/gomega"...) var _ = 설명 ("도서관에서 책 체크 확인 ", 레이블 ("라이브러리 "), func () {var library *libraries.libraryvar book *books.bookvar valjean *user.userbeforeeach (func () {library = libraries.newclient () book = & books.book {제목 : "Les Miserables", 저자 : "Victor Hugo", } valjean = user.newuser ( "Jean Valjean") }) ( "라이브러리에 문제의 책이 있습니다", func () {prevereach (func (ctx speccontext) {epcist (library.store (ctx, book)). }) Context ( "및 책은 사용 가능", func () {it ( "독자에게 빌려줍니다", func (ctx speccontext) {epcit (valjean.checkout (ctx, library, "les miserables"). (succeed ()) expect (valjean.books ()). }, SpectimeOut (Time.second * 5)) }) Context ( "그러나 책이 이미 체크 아웃되었습니다", func () {var javert *user.userbeforeeach (func (ctx speccontext) {javert = user.newuser ( "javert") expect (javert.checkout, ctx, 도서관, "Les Miserables")). to (succeed ()) }) it ( "사용자에게 말한다", func (ctx speccontext) {err : = valjean.checkout (ctx, library, "les miserables") expect (err). )) }, spectimeout (time.second * 5)) it ( "사용자가 홀드를 배치하고 나중에 알림을 받도록하십시오", func (ctx speccontext) {epcit (valjean.hold (ctx, library, "les miserables"). (성공 ()) expect (valjean.holds (ctx)). to ( "Javert가 책을 반환 할 때") expect (javert.return (ctx, library, book)). )) by ( "결국 Valjean에게 정보를 제공합니다") 알림 : = "Les Miserables는 픽업 준비가되었습니다. Les Miserables ")). }, SpectimeOut (Time.second * 10)) }) }) ( "도서관에 문제가없는 책이 없다", func () {int ( "독자에게 책을 이용할 수 없다고 말한다", func (ctx speccontext) {err : = valjean.checkout (ctx, library, " Les Miserables ") expect (err). }, SpectimeOut (Time.second * 5)) }) })
더 많은 것을 배우려면 문서로 뛰어들 것입니다. 부트 스트랩을 쉽게 쓰고 첫 번째 사양을 작성하기 쉽습니다.
질문, 의견, 버그 보고서, 기능 요청 등이 있으면 Github 문제를 열거 나 Ginkgo Slack 채널을 방문하십시오.
기본 단위 사양, 복잡한 통합 사양 또는 성능 사양을 작성하든 Ginkgo는 Quick, RSPEC, Jasmine 및 Busted와 같은 프레임 워크에서 나오는 사용자에게 익숙한 표현 도메인 별 언어 (DSL)를 제공합니다. 이 스타일의 테스트는 때때로 "행동 중심 개발"(BDD)이라고도합니다.
Ginkgo의 DSL을 사용하면 Spec를 구성하는 데 도움이 When
Nestable Describe
, Context
및 Container Nods를 사용할 수 있습니다. 설정 및 정리를위한 BeforeEach
및 AfterEach
설정 노드. It
당신의 주장을 보유하는 주제 노드를 Specify
. 스위트 후 준비하고 청소하기 위해 BeforeSuite
및 AfterSuite
노드 ... 그리고 훨씬 더!.
런타임에 Ginkgo는 사양을 재현 가능하게 무작위 순서로 실행할 수 있으며 사양 병렬화를 정교하게 지원합니다. 사실, 사양을 병렬로 실행하는 것은
Ginkgo -P
병렬 사양을 작성하기위한 확립 된 패턴에 따라 깨끗하게 병렬화되고 실행되는 크고 복잡한 통합 스위트를 구축 할 수 있습니다. Spec Suite가 매달려 있거나 혼란을 남기는 것에 대해 걱정할 필요가 없습니다. Ginkgo는 노드 별 context.Context
및 정해진 기간 후에 사양을 방해 할 수있는 기능 - 정리하십시오.
스위트 룸이 성장함에 따라 Ginkgo는 사양을 라벨로 구성하고 프로그래밍 방식 또는 명령 줄에서 사양의 서브 세트를 쉽게 실행할 수 있도록 도와줍니다. 또한 Ginkgo의보고 인프라는 다양한 형식으로 기계로 읽을 수있는 출력을 생성 하고 고유 한 사용자 정의보고 인프라를 구축 할 수 있습니다.
Ginkgo는 Ginkgo와 함께 제공됩니다. Ginkgo는 ginkgo
와 함께 배송합니다. Ginkgo와 함께 Ginkgo와 함께 배송합니다. Ginkgo와 함께 Ginkgo와 함께 배송됩니다. Ginkgo와 함께 제공됩니다. Ginkgo와 함께 Ginkgo Suites 생성, 달리기, 필터링 및 프로파일 링을 지원하는 지휘관 도구 인 Ginkgo와 함께 제공됩니다. ginkgo watch
사용하여 변경을 감지 할 때 Ginkgo가 자동으로 사양을 실행하도록하여 테스트 중심 개발 중에 빠른 피드백 루프가 가능합니다.
그리고 그것은 단지 Ginkgo입니다! 고메가는 풍부하고 성숙한 주장과 어울리는 가족을 스위트 룸에 가져옵니다. Gomega를 사용하면 사양에서 동기식 및 비동기식을 쉽게 혼합 할 수 있습니다. Gomega의 기존 빌딩 블록을 구성하여 자신만의 표현 도메인 별 매칭 세트를 빠르고 쉽게 구축 할 수도 있습니다.
행복한 테스트!
Ginkgo는 미트 라이센스가 있습니다
Contributing.md를 참조하십시오