2013-09-26 5 views
0

개체를 테스트해야하는 테스트 사례를 작성하고 있지만이 개체는 제대로 작동하려면 많은 구성이 필요합니다.실습으로서 구성 인터페이스 조롱?

지금은 5 또는 6 개의 인터페이스가 있으며 그 중 몇 가지만이 해당 개체를 테스트하는 데 적합합니다.

그래서 기본적으로 구성 관련 인터페이스를 모의하기 위해 Mocking 프레임 워크를 적절하게 사용하고 있습니까? 아니면 데이터를 제공하기 위해 테스트 케이스에 인터페이스를 구현해야합니까?

Mockito.mock(IConfiguration.class); //is this a proper use? 

편집 :

나는 간단한 개체를 조롱하기위한 모의 객체를 사용하지에 대해 언급 어떤 장소에서 읽었습니다. 내 경우에는 객체가 간단하지만 인터페이스가 뚱뚱합니다. 그래서 방법이 많이 있습니다.

+0

테스트와 관련된 구성 설정이 하나라도 있으면 사용자 정의 구현이 필요합니다. 많은 노력없이이 작업을 수행 할 수있는 다양한 방법. – blgt

답변

1

그렇습니다. 인터페이스의 구현을 인스턴스화하는 것이 흔한 일이 아니기 때문에 매우 유용한 유스 케이스입니다.

구성은 테스트를 위해 인스턴스를 쉽게 만들 수 있어야하는 매우 간단한 프레임 워크 여야합니다. 실제로 초당 수십만 개의 구성이 있습니다. 또는 내 코드가 동작을 조정할 수있는 수백 가지 구성 옵션을 지원하지 않으면 왜 구성 프레임 워크가 필요합니까?

하지만 유감스럽게도이 간단한 지혜는 구성 프레임 워크를 작성하는 사람들에게 종종 손실됩니다.

+0

+1 자주? 나는 항상 말할 것입니다. – blgt

+0

@blgt : "구현"이라고 :-) –

0

configuration related interfaces의 구현을 사용하는 클래스를 테스트하는 동안 mock 이러한 구성 인터페이스를 구현해야합니다.

subject under test (SUT)은 구성 클래스의 메소드를 호출하여 해당 작업을 수행합니다. 그들은 방법 내에서 호출되기 전에 테스트 할 수 있도록 주어진 입력을 위해, 당신은 단지 구성 클래스의 메소드 호출의 동작을 스텁해야합니다

public class ServiceTest { 


    IConfiguration mockConfig; 

    private ServiceUnderTest serviceUnderTest; 

    @Before 
    public void setup() { 
     serviceUnderTest = new ServiceUnderTest(); 
     mockConfig = mock(IConfiguration.class); 
     serviceUnderTest.setConfig(mockConfig); 
    } 

    @Test 
    public void test(){ 
    //Here you can stub the behavior of method calls on "IConfiguration" before they're called 
    } 
} 

당신이 ServiceUnderTest 장치를 테스트하는 것처럼, 구성 클래스의 실제 구현이 필요하지 않습니다. 이러한 구성 클래스에서 메소드 호출의 동작을 스텁링하면됩니다.

관련 문제