2011-02-16 5 views
5

테스트중인 백엔드 버전이 세 가지 있습니다. 세 가지 버전에 대해 유사한 기능 사양을 실행하고 싶습니다.오이 : 복잡한 테스트 세트를 구성하는 방법

처음에, 난 그냥 같은 디렉토리 구조에 모든 것을 정리 거라고 생각 :

features/ 
    v1/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 
    v2/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 
    v3/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 

그러나, 오이 내가 모호한 단계 정의로 끝날 것을 의미 모든 것을 평평하게 보인다. 하나를위한 것임을 버전을 나타내는 어디 선가 기능 파일의 변수를 정의하는 것

features/ 
    v1/ 
    something.feature 
    v2/ 
    something.feature 
    v3/ 
    something.feature 
    step_definitions/ 
    something_steps.rb 

, 나는 "IFS"의 무리이있을 것이다 :

난 후, 다음과 같은 구조의 생각 단계 파일 내에서 해당 버전 변수에 따라 코드 경로를 선택하십시오. 그러나 필자는 피쳐 파일에서 해당 변수를 정의하는 분명한 방법을 찾지 못했습니다.

내가 어떤 것을 구성 할 수있는 방법이 있습니까, 아니면 오히려 여러 번의 호출을 의미하는 끔찍한 해결책이 될 수있는 버전마다 하나씩 여러 "기능"루트를 만들어야합니까?

v1/ 
    features/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 
v2/ 
    features/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 
v3/ 
    features/ 
    something.feature 
    step_definitions/ 
     something_steps.rb 
+0

뻔뻔한 플러그 - 나는이 정확한 상황을 돕기 위해 실제로 보석을 썼습니다. https://github.com/jmerrifield/cuke_iterations –

답변

6

여러 번의 오이 호출이 나쁜 이유는 무엇입니까? 개인적으로, 그게 내가 할 수있는 방법, 그리고 Rakefile에서 세 가지 기능을 모두 실행하기 때문에 하나씩 할 필요가 없었어요.

또한 충돌이 너무 커서 각 버전에 대한 전체 단계 정의를 다시 작성하지 못하면 어떻게 작성해야할지 다시 생각해 봐야합니다. 코드가 너무 다르면 똑같은 일을한다고 설명해야할까요?

변경 사항이 더 작 으면 tagshooks을보고 원하는 것을 얻는 것이 좋습니다.

@v1 
Feature: some feature 
    In order to test different versions 
    As a cucumber user 
    I want to be able to change step definitions based on what version feature is running 

    Scenario: some scenario 
    Given some thing 
    When I pass some method 
    Then I should get something 

을 그리고 당신의 단계 정의는 다음과 같습니다 :

그래서 당신의 기능은 다음과 같을 수 단계의 정의는 매우 다른 경우에도이 방법을 사용할 수 있습니다

Before('@v1') do 
    Thing = V1Thing 
    VERSION = 1 
end 

Given /^some thing&/ do 
    @thing = Thing.new 
end 

When /^I pass some method$/ do 
    @thing.some_action! 
end 

Then /^I should get something$/ 
    thing = "something" if VERSION == 1 
    thing = "something else" if VERSION == 2 
    @thing.prop.should == thing 
end 

하지만, 나는 그것이 관리하기가 더 어려울 것이라고 생각한다.

+0

여러 번의 호출 문제는 실제로 모든 결과를 좋은 결과 집합으로 가져 오는 것입니다 , 지속적인 빌드 등의 목적을 위해. 당신이 언급 한 접근 방식은 내가 찍은 것, 감사합니다! –

관련 문제