2017-10-27 15 views
0

피처 파일을 처음 실행할 때 런타임 중에 필드를 업데이트하고 있습니다. 다른 기능 파일로 전달하려면 동일한 입력란의 값이 필요합니다. Java를 사용하여 하나의 기능 파일의 데이터를 다른 기능 파일로 전달할 수 있습니까? 여기한 기능 파일의 데이터 (예제에서)를 다른 기능 파일로 전달하는 방법은 무엇입니까?

feature file 1: 
scenario outline: test xxx functionality 
Examples : 
|user|password| 
|abc|pass| 

feature file2: 
Scenario Outline : test yyy functionality 
Examples: 
|user|password| 
| |  | 

, 나는 기능 FILE1에이 데이터 파일이 2 예, ABC와 패스 2 미리 suggest.Thanks을주세요 기능 파일의 예에 복사해야 기능을 전달하려면 !! !!

답변

0

엄밀히 말하면, 한 BDD 테스트에서 다른 BDD 테스트로 데이터를 전달해서는 안됩니다. 이것은 독립적 인 단위 BDD ​​테스트의 목적을 무효화합니다. 일반적으로 소프트웨어 단원 테스트는 서로 독립적이라고 가정합니다.

말했다되고 그건

, 당신은 확실히 한 단계 정의에서 어떤 상태를 유지 한 후 또 다른 하나를 다시 사용할 수 있습니다 :

@When("^I login with username \"(.*)\"$") 
public void enterUsername(String username) { 
    // do something with username 

    // make a database call and insert the username in a temporary table 
} 

그런 다음 두 번째 기능은 파일에서 같은 테이블을 조회 할 수 있습니다 및 사용자 이름을 검색 할 수 있습니다.

이것은 정확히 사용자가 염두에 두지는 않았지만 일반적인 아이디어는 첫 번째 테스트 중에 일부 상태를 유지 한 다음 두 번째 테스트에서 사용할 수 있습니다.

+0

이것은 하나의 시나리오와 다음 시나리오 사이에서 변수의 상태가 손실되고 데이터베이스가 리셋된다는 설명이 없으므로 OP에 대해 약간 오도하는 것입니다. 마지막 문장에서'test'를 사용하는 것은 당신이 여기서 시나리오 나 단계 정의에 대해 이야기하고 있는지를 혼란스럽게합니다. 단계 정의는 테스트가 아닙니다. – diabolist

+0

@diabolist'데이터베이스가 리셋 될 것입니다. '... 아니, 그렇지 않습니다. 우리는이 메소드를 사용하여 무국적이라고 가정하는 단계의 문제를 해결합니다. –

+0

기본적으로 Cucumber는 시나리오간에 데이터베이스를 재설정하려고합니다 (단계가 아니라). 단계에 대해 이야기 할 때와 시나리오에 관해 말할 때 명확하지 않기 때문에 대답이 혼란 스럽습니다. 같은 시나리오에서 사용하는 경우에만 단계 정의간에 데이터를 공유 할 수 있습니다. – diabolist

1

한 기능 파일에서 다른 기능 파일로 값을 전달하는 기능은 지원되지 않습니다. 특정 순서로 시나리오를 실행해야합니다. 그것은 잘 알려진 안티 패턴입니다. 시나리오는 어떤 순서로든 실행이 가능해야하며 하나의 시나리오가 다른 시나리오보다 먼저 실행되기를 기대한다면 불가능합니다.

두 번째 첫 번째 기능 파일에서 어떻게 설치를 재사용 할 수 있습니까? 짧은 대답은하지 않습니다. 대신 사용자가 설정해야하는 기능을 사용하여 테스트중인 시스템을 준비하는 데 사용할 수있는 도우미를 구현하십시오. 이 설정이 실행되기 전에이 설정이 필요한 각 시나리오에서이 도우미를 호출하십시오. 이것은 많은 불필요한 작업으로 들릴지 모르겠지만 서로에 의존하는 시나리오로 인해 많은 문제에서 벗어나고 실행 사이에 시스템이 예상치 못한 상태로 남을 수 있습니다.