2008-09-18 2 views
3

내 코드는 인터페이스를 입력으로 사용하지만 몇 가지 인터페이스 메소드 만 설명합니다 (종종 getter 만 사용).Java에서 복잡한 인터페이스를 스텁하는 가장 간단한 방법은 무엇입니까?

코드를 테스트 할 때 테스트 데이터를 반환하는 익명 내부 클래스를 정의하고 싶습니다. 인터페이스가 요구하는 다른 모든 방법에 대해서는 어떻게해야합니까?

내 IDE를 사용하여 인터페이스 용 스텁을 자동으로 생성 할 수 있지만 코드가 상당히 복잡해 보입니다.

내가 관심있는 두 가지 방법을 스텁링하는 가장 쉬운 방법은 무엇이며 그렇지 않은 방법은 무엇입니까?

답변

5

테스트 할 때 JUnit을 사용하는 경우 스텁 대신 Mocks를 사용하십시오.

읽기 마틴 파울러의 정액 기사는 "Mocks Aren't Stubs는"

내가 EasyMock 프레임 워크를 추천, 그것은 매력이 자동 반사를 사용하여 인터페이스를 비웃음처럼 작동합니다. Fowler의 기사에서 코드 샘플보다 조금 더 진보되어 있습니다. 특히 unitils 라이브러리를 사용하여 EasyMock을 래핑하면 구문이 기사의 내용보다 훨씬 간단 해집니다. 또한 인터페이스가 없지만 구체적인 클래스를 모의하려는 경우 EasyMock에는 클래스 확장이 있습니다.

0

는 "어댑터 클래스"를 작성하고 당신이 관심 단지 방법을 덮어 씁니다.

class MyAdapter extends MyClass { 
    public void A() { 
    } 
    ... 
} 
0

나는 고전적인 방법은 빈 방법으로 추상 클래스를 만드는 것입니다 믿습니다. 적어도, Sun은 MouseListener에서 이러한 이벤트의 사용을 쉽게하기 위해 MouseAdapter을 작성했습니다.

0

EasyMock 또는 JMock은 확실히 수상자입니다. 필자는 JMock을 사용하지 않았지만 EasyMock을 사용하여 테스트 스크립트에 따라 Mock 객체를 설정할 수 있으며 테스트 중에 특정 상황이나 특정 시점에 특정 값을 반환합니다. 일반적으로 1 시간 이내에 배우기 쉽고 달리기가 쉽습니다.

+0

JMock도 그렇게합니다. – marcospereira

관련 문제