2012-04-25 3 views
22

전체 테스트를 실행할 때 특정 순서로 실행하고 싶은 RSpecRake 개의 작업이 정의되어 있습니다.특정 순서로 RSpec 작업 실행

task :run_in_order => [:one, :two, :three] do 
    puts "Run suite of tests" 
end 

을 그리고 그것은 중지하고 작업의 나머지 부분을 실행하지 않습니다 다음 첫 번째 테스트를 실행하고 :

나는 이런 식으로 뭔가를 시도했습니다.

그래서 Rake 구문을 사용하면 작동하지 않습니다. RSpec Rake 작업의 작업 종속성을 기록하는 방법이 있습니까? 랜드 및 기본 :

+2

테스트가 서로 독립적이어야하기 때문에 아주 나쁜 습관입니다. – luacassus

+8

@luacassus 저도 알고 있습니다. 이런 식으로하지 않기 위해 무언가를 얻는 중입니다. 그러나 그 동안에는 이것이 사물의 방식입니다. 그래서 나는 그것을하지 않는 것 이외의 답을 찾고있다. 기술적으로 Rspec을 사용할 수 없습니까? – Hillary

+1

테스트를 통과했는지 여부를 실제로 확인하기 위해 "하지 마라."하지만 클라이언트와 논의 할 사양 보고서를 작성하여 의미있는 순서로 보고서를 생성 할 수있는 실행 방법은 무엇입니까? 꽤 필수적입니다. – digitig

답변

45

확인이 http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/

- 오더 랜드 우리는이 개 지원되는 값과 --order 옵션을 추가했습니다.

rspec --order random (또는 rand)은 임의의 순서로 그룹을 실행하도록 지시 한 다음 각 그룹 내에서 임의의 순서로 예제를 실행합니다. (: all) 훅 전에 값 비싼 을 다시 실행하고 싶지 않기 때문에 이렇게 (모든 예제의 무작위 화 을 완료하는 대신)이 방법으로 구현했습니다. 결과적인 임의 화는 순서 종속성 버그를 노출시키는 것과 마찬가지로 효과가 있습니다 ( ).

--order random을 사용하면 RSpec은 랜덤 화기 시드에 사용 된 난수 을 인쇄합니다. 당신은 당신이 주문 종속 버그를 발견했다고 생각하면 함께 씨앗을 전달할 수와 순서가 일관성이 유지됩니다 :

랜드 --order : 3455 --order 기본 그룹과 예제를로드 RSpec에 알려줍니다 그들은 각 파일

에 선언 된대로 기본적으로 당신은 다음 --order default 옵션을 실행 스펙 파일에 테스트를 주문해야합니다. .