2011-03-11 10 views
0

seam 구성 요소가 아닌 클래스 중 하나의 생성자에서 Component.getInstance(Needed.class)을 호출하려고합니다. 그건 잘 작동하지만, 단위 테스트와 그것을 커버하려고 노력하고있어 내가 위의 줄에 IllegalStateException입니다지고 있어요. Component.getInstance를 테스트로 덮는 방법이 있습니까? 당신은 단위 테스트에 적합하지 않는 당신의 클래스에 Service Locator pattern를 사용하는 사전Seam Component.getInstance() 및 unit testing

답변

1

에서 내가 라이브러리를 unitils 사용하고 있습니다 그런데

... 감사합니다. Dependency Injection pattern으로 이동해보세요. 이것은 단위 테스트를 훨씬 쉽게 만듭니다.

서비스 로케이터 예 :

public class MyService : Service 
{ 
    private Needed dependency; 

    public MyService() 
    { 
     this.dependency = 
      Component.getInstance(Needed.class); 
    } 
} 

의존성 삽입 예 : 의존성 주입을 수행 할 때, 사용자의 클래스 (사용자의 경우 Component) 콘테이너에 대한 참조를하지 않을

public class MyService : Service 
{ 
    private Needed dependency; 

    public MyService(Needed dependency) 
    { 
     this.dependency = dependency; 
    } 
} 

어느 클래스를 단위 테스트하는 것이 훨씬 쉬워집니다.

관련 문제