Код Mockito во время аннотированного метода @Before - PullRequest
1 голос
/ 24 августа 2011

Я новичок в использовании Mockito Framework (и Behavior / Test Driven Development) и использовании чтобы помочь мне написать некоторые вещи;

Я пишу свою собственную библиотеку Java для xml, чтобы создавать графические объекты и я попытался сначала проверить некоторые поведения: (MockitoAnnotations.initMocks(Class) используется в BaseTestClass):

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());
}    

Я думаю, что моя ошибка в:

 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));

Это не правильный код? или я что то недопонимаю? Спасибо за любую помощь

1 Ответ

2 голосов
/ 24 августа 2011

Попробуйте добавить это в качестве первой строки в вашей функции setUp ():

    MockitoAnnotations.initMocks(this);
...