2009-07-28 3 views
11

빠른 소개가있는 2-parter입니다. 소개 : 저는 Perl에서 Ruby를 방문하려고합니다. 테스트 프레임 워크 선택에서 약간 분실했습니다. 아마 아무도 없다는 것을 알고 있습니다. 선택의 여지가 있지만, 나는 경기장에 대한 명확한 그림을 얻을 수 없습니다.Ruby 1.9.x의 테스트 프레임 워크에 대한 합의가 있습니까?

따라서 MiniTest 또는 Test :: Unit? 방금 MiniTest에 1.9.1 기본값이 있음을 알았습니다. 이전의 모든 Test :: Unit 튜토리얼은 여전히 ​​정상적으로 작동했기 때문에 눈치 채지 못했습니다. require test/unit이라면 실제로 MiniTest를 Test :: Unit 에뮬레이터 (!)로 사용할 수 있습니다. 저의 초기 생각은 MiniTest의 기본 선택 (한 번 내가 거기에 있다는 것을 알았습니다)으로가는 것이 었습니다. 그러나 최근의 책조차도 그것을 가르치는 것에 관심이없는 것 같습니다. 루비 모범 사례은 두 사람 사이에 "중요한 차이가 있습니다"라고 말하지만 그 사람을 다루지 않기로 결정했습니다. 또한 Test :: Unit (일부 맞춤 추가 기능 추가)을 통해 모든 테스트를 실행합니다. 새로운 Pickaxe는 또한 MiniTest 그 자체가이며, 테스트 장에서는 MiniTest의 Test :: Unit 에뮬레이션 버전도 사용합니다. 내 첫 번째 질문을 명확히하기 위해 : MiniTest가 처음으로 좋지 않은 옵션입니까? Test :: Unit 에뮬레이터를 기본값으로 사용해야합니까?

둘째, 기본 제공되는 옵션 외에 Rspec, Cucumber & 회사에서 동작 기반 테스트를 수행합니다. 커뮤니티가이 스타일과이 틀을 향하여 강하게 기울어지고 있습니까? Rspec으로 시작해야합니까?

나는 세 가지 모두를 가지고 조금 놀아 보겠다. 그러나 나는 Ruby 1.9에서 어떤 테스트가 이루어지고 있는지에 대한 의견이 궁금하다.

(자신과 관심있는 사람들에 대한 알림과 같은 빠른 후속. 다양한 루비 1.9.1 1.8에서 테스트 : 단위 및 MiniTest에 대한 다른 호출의 유용한 개요 this link 참조하십시오.)

답변

6

합의가 있습니까? 나는 말하지 않을 것이다. TDD/BDD 사용에 대한 강력한 커뮤니티 목소리가 있지만 그렇다고하더라도 보편적이지는 않습니다. 프레임 워크는 처음부터 연습을 적용하는 것보다 덜 중요합니다.

Minitest는 Test :: Unit의 1.9 대체품으로, 이전 버전과의 호환성을 위해 새 라이브러리 주위에 래퍼로만 존재한다고 생각합니다. 나는 가장 작은 특정 경로를 취하는 것이 더 앞으로 나아갈 것이라고 생각한다.

RSpec은 "전통적인"xUnit에 영향을받는 프레임 워크에 의해 덜 드러난다. 당신이 그것을 선호하는지 볼 시간이 필요합니다.

Shoulda도 있습니다. 어떻게 테스트했는지 모르겠지만 1.9 : Test :: Unit에 대한 래퍼/확장 기능이 더 많아서 작동 할 수 있습니다.

물론 재미는 멈추지 않습니다. 일단 테스트 프레임 워크를 선택하면 어떤 종류의 조롱 엔진을 원할 것입니다. 또는 데이터 픽스처 대체.

는 모든 경우에, 나는 당신이 정기적 인 업데이트, 오픈, 인구 사회와 당신이 일을 할 것 싫어하는 API의 증거를 발견 할 수있는 어떤 프레임 워크를 말할 것입니다. 나중에 어떤 선택을했는지에 대해 당신은 나중에 총살 당할 것 같지 않습니다.

+1

Shoulda는 지금 시점에서 좋지 않습니다. RSpec matcher 또는 Minitest는 '미래의 증거'입니다. 방금 Google 앱을 Shoulda에서 Minitest로 옮겼으며 그만한 가치가있었습니다. –

7

저는 1 년 정도 Rspec을 사용해 왔습니다. Test :: Unit에서 전환 한 이유는 테스트 할 대상을 사람이 읽을 수있는 방식으로 인쇄 할 수 있기 때문입니다.

산문과 비슷합니다. 어느 것이 나를 위해 큰 플러스입니다. 그러나 모든 것과 마찬가지로 결과는 다양합니다.

describe Model do 
    it "should do what I want" do 
    this.should == that 
    it.should be_nil 
    that.should_not be_true 
    end 
end 

또한 당신은 또한 RCov 같은 커버리지 도구에 대해 생각해야 테스트 프레임 워크의 reguardless. rspec과 통합되어 코드에 테스트가없는 부분을 알려줍니다.

+0

샘플에 감사드립니다 (실제 작동중인 Rspec 사진 제공). RCov 권장 사항. – Telemachus

+2

Ruby 1.9에서 MiniTest/Spec은 내장 된 MiniTest/Spec을 사용하여 동일한 시냅스를 사용하며 훨씬 더 빠르게 실행할 수있는 이점이 있습니다. – cczona

3

저는 개인적으로 rspec을 사용합니다. 행동에 대한 테스트를 집중시키는 것이 내가하는 일에 정말로 도움이된다는 것을 알게되었습니다.

rspec을 사용하여 공장 자료실 또는 기계공과 같은 것을 얻고 테스트 데이터를 생성하려면 조명기를 사용하지 마십시오. 새로운 버전은 프레임 워크의 개발을 계속하기 위해 레일의 각 버전에 일반적으로 출시되고 함께 마이크는 말과 관련하여

는 RSpec에 프로젝트는 매우 활성화되어 있습니다.

+0

권장 사항을 보내 주셔서 감사합니다. 나는 소수의 사람이되어야하지만 Ruby for Ruby에 관심이 있습니다. 나는 웹 애플리케이션에 전혀 관심이 없기 때문에 레일스에 관심이 없다. 그렇지만 테스트 프레임 워크에 대한 활동은 좋지 않을 수 있습니다. 또는 적어도, 나는 그 물건이 어떻게 작동하는지 끊임없이 다시 배우고 싶지 않다. 그래도 Rspec을 확인하려고합니다. – Telemachus

+0

확인해보십시오. rspec을 사용하여 루비에서 작성한 모든 것을 테스트/스펙으로 작성할 수 있으며, 레일을 절대 터치하지 않더라도 갈 수있는 좋은 방법입니다. – nitecoder

4

RSpec은 "The Rails Way"와 같이 인기있는 레일스 서적의 합의입니다. 장점 IMHO는 영어와 같이 읽는 테스트, 영어와 같이 읽는 출력 형식, 즉석 matcher입니다. 단점은 속도가 느리며 때때로 Ruby 및 유닛 테스트에 익숙한 코더에게는 너무 이상한 마법 같은 느낌을줍니다. RSpec은 또한 오이 (Cucumber)와 작은 오이 (Gherkin)를 제공하는데, 이는 고객의 유용한 수용에 관한 이야기를 작성하는 방법입니다.

MiniTest는 Ruby 1.9에 내장되어 있습니다. 장점 IMHO는 다른 언어의 코더들에게는 읽기/쓰기가 빠르며 속도가 빠르며 실제 코드에서 사용하는 것과 동일한 코드 스타일을 사용하는 테스트입니다. MiniTest는 대부분의 사람들이 알고있는 것보다 훨씬 많은 것을 가지고 있습니다. 예를 들어, MiniTest Spec은 RSpec과 비슷한 BDD matcher를, MiniTest Mock은 조롱 시스템을, MiniTest Benchmark는 성능 프로파일 링을위한 것입니다. 내 개인적인 경험에서

은 레일 애플 리케이션을 구축 사람들은 RSpec에쪽으로 경향이 있고, 순수 루비 코드를 빌드 사람들은 그래서 MiniTest 단위, 규격, 모의, 벤치 마크를 향해 경향이 있고.

1

RSpec에 좋은입니다하지만 난 루비 1.9.x. 함께 제공 Minitest 뒤에 이야기와 많은 움직임이 있었다 최근에 생각 그것은 RSpec의 많은 좋은 점을 가지고 있지만 훨씬 더 간결하고 간결합니다.

관련 문제