2017-11-09 12 views
1

4 단계 정의 클래스와 일련의 도메인 개체 클래스가 있습니다. 내 첫 번째 단계 정의 클래스는 다음과 같습니다오 큐란 단계 정의 사이의 상태 공유

public class ClaimProcessSteps { 
    Claim claim; 

    public ClaimProcessSteps(Claim w){ 
     this.claim = w; 
    } 

    @Given("^a claim submitted with different enrolled phone's model$") 
    public void aClaimSubmittedFromCLIENTSChannelWithDifferentEnrolledPhoneSModel() throws Throwable { 
     claim = ObjMotherClaim.aClaimWithAssetIVH(); 
    } 


} 

내 주장 클래스는 다음과 같습니다 : 이미했습니다

public class CaseLookupSteps { 
    Claim claim; 

    public CaseLookupSteps(Claim w){ 
     this.claim = w; 
    } 

    @When("^I access case via (right|left) search$") 
    public void iAccessCaseInCompassViaRightSearch(String searchVia) throws Throwable { 
     System.out.println(claim.getClaimType()); 
    } 

: 같은

public class Claim { 
    private String claimType; 
    private String clientName;     
    private Customer caller; 
    private List<Hold> holds; 

    public Claim() {} 

    public Claim(String claimType, String clientName, Customer caller) { 
     this.claimType    =  claimType; 
     this.clientName    =  clientName; 
     this.caller     =  caller; 
    } 

    public String getClaimType() { 
     return claimType; 
    } 

내 두 번째 단계 정의 클래스 보인다 내 POM.XML에 picocontainer 종속성을 가져오고 다음 오류가 발생합니다.

3 만족스러운 생성자가 'class java.lang.String'에 비해 너무 많습니다. 생성자 목록 : [(Buffer), (Builder),()]

내 단계 정의 클래스 생성자 중 아무 것도 인수로 프리미티브를받지 않습니다. 아무도 내가 아직도 그 오류가 발생하는 이유에 대한 단서가 있습니까? 해당 생성자에서 문자열을 기대하는 내 비즈니스 개체 생성자가 될 수 있습니까?

미리 도움을 청하십시오.

+0

소유권 주장에서 기본이 아닌 생성자를 제거해 보셨습니까? 그것은 문자열을 매개 변수로 사용하므로 문제가 될 수 있습니다. – alayor

답변

0

는 시나리오를 가정하면 다음과 같습니다

Given some sort of claim 
When I lookup this claim 
Then I see this claim 

은 현재 테스트는 주장의 설정 단계가 없습니다.

따라서 단계간에 클레임 개체를 직접 공유하는 대신 기본 생성자 만 사용하여 ClaimService 클래스를 만들어야합니다. 이 서비스를 단계 정의에 삽입 할 수 있습니다.

서비스를 삽입 한 후에는 Given some sort of claim의 단계 정의에서 서비스를 사용하여 claimService.createSomeSortOfClaim()으로 전화하여 소유권 주장을 만들 수 있습니다. 이 주장은 메모리, 모의 DB, 실제 DB 또는 기타 영속성 매체에서 생성 될 수 있습니다.

When I lookup this claim 그러면 claimService.getClaim()을 사용하여 해당 유형을 검색 할 수 있으므로 해당 유형을 검색 할 수 있습니다.

이렇게하면 DI 컨테이너가 테스트중인 클레임을 작성하는 방법을 알아내는 데 어려움을 피할 수 있습니다.

0

Picocontainer은 종속성을 해결하기 위해 단계 정의 클래스를 검토합니다. 또한 단계 정의에 의존하는 모든 클래스를 검색합니다.

이 경우 기본값이 아닌 Claim 생성자에 대한 종속성을 해결하려고합니다.

public Claim(String claimType, String clientName, Customer caller) { 
    ... 
} 

issue에 따르면 모든 의존성 만 기본 생성자를 유지하는 것보다이 기타를 해결할 수있는 방법은 없습니다.