2015-02-08 1 views
1

У меня есть класс, в котором некоторые поля: @Autowired, а некоторые нет, а в тестовом классе я хотел бы автоматически вводить значения не только для полей @Autowired. Но автоматическая инъекция происходит только для полей @Autowired.JMockit's @Injectable для неавторизованных полей

Вот пример:

public class SimpleObject { 
    Long id; 
    @Autowired UsersDAO usersDAO; 
} 


public class SimpleTest { 

    @Tested SimpleObject testedSimpleObject; 
    @Injectable @Mocked UsersDAO usersDAO; 
    @Injectable Long id = new Long(200); 

    @Test 
    public void testId() { 
     assertNotNull(testedSimpleObject); 
     assertNotNull(testedSimpleObject.id); 
    } 
} 

Испытание потерпит неудачу на второй линии. поле id не вводится автоматически. Но если я удаляю аннотацию @Autowired от UsersDAO, тест проходит.

Почему это так? И как я могу решить проблему? Я понимаю, что я могу добавить некоторую другую аннотацию в поле id, но я хотел бы, если возможно, решить ее без изменения исходного исходного кода.

ответ

1

Это связано с ошибкой в ​​JMockit 1.14, но это уже исправлено для следующего выпуска, 1.15 (ожидается в феврале/2015).

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