Как изменить значение по умолчанию для строк в Mockito?

Этот выпуск 2010 года намекает на то, что яя пытаюсь сделать.

я работаю над модульным тестом, который выполняет код, который требует много поддельных объектов, чтобы выполнить то, что ему нужно (тестирование рендеринга HTML + PDF). Чтобы этот тест был успешным, мне нужно сгенерировать много фиктивных объектов, и каждый из этих объектов в конечном итоге возвращает некоторые строковые данные в тестируемый код.

считать Я могу сделать это, реализуя либо мой собственныйAnswer класс илиIMockitoConfiguration, но я не уверен, как реализовать их, чтобы они влияли только на методы, которые возвращают строки.

Я чувствую, что следующий код близок к тому, что я хочу. Это бросает исключение броска,java.lang.ClassCastException: java.lang.String cannot be cast to com.mypackage.ISOCountry, Я думаю, что это означает, что мне нужно как-то по умолчанию или ограничитьAnswer влияет только на значения по умолчанию для.String

private Address createAddress(){
    Address address = mock(Address.class, new StringAnswer() );

    /* I want to replace repetitive calls like this, with a default string. 
    I just need these getters to return a String, not a specific string.

    when(address.getLocality()).thenReturn("Louisville");
    when(address.getStreet1()).thenReturn("1234 Fake Street Ln.");
    when(address.getStreet2()).thenReturn("Suite 1337");
    when(address.getRegion()).thenReturn("AK");
    when(address.getPostal()).thenReturn("45069");   
    */

    ISOCountry isoCountry = mock(ISOCountry.class);
    when(isoCountry.getIsocode()).thenReturn("US");
    when(address.getCountry()).thenReturn(isoCountry);

    return address;
}

//EDIT: This method returns an arbitrary string
private class StringAnswer implements Answer {
    @Override
    public Object answer(InvocationOnMock invocation) throws Throwable {
        String generatedString = "Generated String!";
           if( invocation.getMethod().getReturnType().isInstance( generatedString )){
               return generatedString;
           }
           else{
               return Mockito.RETURNS_DEFAULTS.answer(invocation);
           }
       }
}

Как я могу настроить Mockito для возврата сгенерированной строки по умолчанию для методов в проверяемом классе, которые возвращают строку?Я нашел решение этой части вопроса о SO

Для дополнительных очков, как я могу сделать это сгенерированное значение в виде строки, которая находится в формеClass.methodName? Например"Address.getStreet1()" вместо просто случайной строки?

Ответы на вопрос(1)

Ваш ответ на вопрос