NullPointerException при попытке автоматически связать свойства конфигурации, запущенные с MockitoJUnitRunner - PullRequest
1 голос
/ 04 июня 2019

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

application.yaml

affix:
  lover: 'interests'
  social: 'social_media'

YamlConfig.java

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
@EnableAutoConfiguration
@Data
public class YamlConfig {
    private HashMap<String, String> affix;
}

Service.java

@Autowired
private YamlConfig config;

...

setFeatureName(config.getAffix().get("social"));
// supposed to return social_media

Приведенный выше код отлично работает в моем сервисе, но когда я пытался использовать свойства конфигурации в моих тестовых классах, он не работал.

ServiceTest.java

@RunWith(MockitoJUnitRunner.class)
public class MetadataServiceTest {
@Autowired
private YamlConfig config;

@Test
public void testPropertiesNotNull() {
  assertNotNull(config.getAffix().get("social"));
}

Я также пробовал другие аннотации, но ни одна из них, похоже, не работала. В большинстве примеров тестирование выполняется с использованием JUnitRunner, и я не уверен, что по этой причине они не работали на моих тестовых классах.

В любом случае можно ли получить свойства конфигурации для использования в тестовом классе с использованием MockitoJUnitRunner без насмешки всего этого (фактическая конфигурация очень велика и будет трудно смоделировать результат для каждого)?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Поскольку вы используете аннотацию @Autowired, вы должны использовать, например, @RunWith (SpringJUnit4ClassRunner.class)

Таким образом, вы начнете свои тесты в контексте Spring.

Ноесли вы все еще хотите использовать MockitoJUnitRunner, вместо @Autowired вы можете использовать: @InjectMocks private YamlConfig config;

0 голосов
/ 04 июня 2019

Ваш @Autowired в тесте игнорируется, так как у вас не выбран какой-либо контекст Spring.Сделайте это интеграционным тестом Spring с аннотацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...