2011-08-24 2 views
1

Mockito 프레임 워크 (및 동작/테스트 주도 개발)를 사용하고 을 사용하여 새로운 코드를 작성하는 데 새로운 기능이 있습니다. (MockitoAnnotations.initMocks(Class)BaseTestClass에 사용) : 그래픽 물건을 만들 수있는 XML과 에 대한 내 자신의 자바 라이브러리를 코딩모비토 코드 @ beforee annoted method solution

미안 내가 먼저 어떤 행동을 확인 시도

public class GeneralXml extends BaseTestClass { 

    private static final String TAG = "General XML"; 
    @Mock(name="xml") private XmlGraphics mockXML; 

    @Before 
    public void setUp() throws Exception{ 

     //stub method parseDimension 
     when(mockXML.parseDimension(anyString())) 
      .thenReturn(500); 

     // stub method parsePosition: 500 X 500 X 500 is an 
     // arbitrary dimension of window 
     when(mockXML.parsePosition(anyString())) 
      .thenReturn(
       new Random().nextFloat() * mockXML.parseDimension(Xml.WIDTH), 
       new Random().nextFloat() * mockXML.parseDimension(Xml.HEIGHT), 
       new Random().nextFloat() * mockXML.parseDimension(Xml.DEPHT)); 

     // Now Colors must have betwwen 0 and 255 
     // (RGB color) 
     when(mockXML.parseColorComponent(anyString())) 
      .thenReturn(
       new Random().nextInt(256),  
       new Random().nextInt(256),  
       new Random().nextInt(256));  

    } 

을하지만 모든 후속에 오류가 발생

:

@Test 
public void mockPosition() { 
    Log.d(TAG, "mock", "x = "+mockXML.parsePosition(Xml.X)); 
    Log.d(TAG, "mock", "y = "+mockXML.parsePosition(Xml.Y)); 
    Log.d(TAG, "mock", "z = "+mockXML.parsePosition(Xml.Z)); 

    verify(mockXML, times(3)).parsePosition(anyString()); 
}  

이 내 오류에 있다고 생각 : 같은 검증,

이것은 유효한 코드가 아닙니다. 아니면 내가 뭔가를 오해 한거야? 어떤 도움 감사

답변

1

에 한번 당신의 설정에서 첫 번째 줄이 추가() 함수 :

MockitoAnnotations.initMocks(this); 
+0

하지 내가 BaseTestClass에서 "uninherited" – gcrav

+0

I "uninherited"GeneralXml (즉 itsef이 MockitoAnnotation이 너무 작동 .initMocks (this), setUp()에 넣었지만 작동하지 않았다; – gcrav

+0

JUnit으로부터 다음과 같은 응답이 있습니다. org.mockito.exceptions.misusing.UnfinishedStubbingException : gUploading에서 완료되지 않은 스텁이 감지되었습니다 : -> at gml.processing. xml.reader.test.GeneralXml.setUp (GeneralXml.java:34) 예를 들면 다음과 같습니다.()가 누락되었을 수 있습니다. 정확한 스터 빙 예제 : when (mock.isOk()). then return (true); (mock.isOk()) whenThrow (exception); doThrow (예외) .when (모의) .someVoidMethod(); 힌트 : 누락 된 thenReturn() 2. 스텁 된 메소드가 mock을 반환 할 수 있지만 thenReturn 메소드 내부에서 모의 ​​생성 (mock()) 호출을 인라인 할 수 없음 (문제 53 참조) – gcrav