2015-07-31 8 views
1

Я бы хотел, чтобы подразделение тестировало мои классы сопоставления JDBI, так как не все имеют тривиальное сопоставление свойств.JDBI mapper Тесты JUnit

Мой класс тестирования выглядит следующим образом:

public class IdentRuleMapperTest { 

    @Mock 
    ResultSet resultSet; 

    @Mock 
    ResultSetMetaData resultSetMetaData; 

    @Mock 
    StatementContext ctx; 

    IdentRuleMapper mapper; 

    @Before 
    public void setup() { 
    mapper = new IdentRuleMapper(); 
    } 

    @Test 
    public void mapTest() throws SQLException { 
    Mockito.when(resultSet.getString("ID")).thenReturn("The ID"); 
    Mockito.when(resultSet.getString("NAME")).thenReturn("The name"); 
    Mockito.when(resultSet.getString("REGULATION")).thenReturn("CRS"); 
    Mockito.when(resultSet.getString("JSON_ACTIONS_STRING")).thenReturn("the json string"); 
    IdentRule identRule = mapper.map(0, resultSet, ctx); 

    } 
} 

Испытание бросает NPE на линии

Mockito.when(resultSet.getString("ID")).thenReturn("The ID");

Любой человек может указать мне, почему это не будет работать?

+0

Guess: Вы используйте '@RunWith (MockitoJUnitRunner.class)', чтобы убедиться, что аннотация ResultSet оценивается? –

ответ

2

Аннотация @Mock не создает самонадеянные объекты. Вы должны добавить Mockito's JUnit правило в качестве поля для теста

@Rule 
public MockitoRule rule = MockitoJUnit.rule(); 

или использовать его JUnit runner

@RunWith(MockitoJUnitRunner.class) 
public class IdentRuleMapperTest { 
    ... 

или создать издевается в качестве @Before метода с использованием MockitoAnnotations

@Before 
public void initMocks() { 
    MockitoAnnotations.initMocks(this); 
} 
0

При настройке ожиданий на штукатурные объекты используйте совпадения для сопоставления аргументов.

Mockito.when(resultSet.getString(Matchers.eq("ID"))).thenReturn("The ID"); 

 Смежные вопросы

  • Нет связанных вопросов^_^