Как автоматически отключить бин Spring при запуске модульного теста? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть класс обслуживания, который запускает поток и запускает некоторые фоновые задачи. Эти задачи не должны выполняться, пока я выполняю модульное тестирование. Сам класс обслуживания настолько прост, что его не нужно тестировать модулем. Это как:

@Service
public class BackgroundTaskService {
    @PostConstruct
    public void startTask() {
        // ...
    }
}

В настоящее время я устанавливаю системное свойство для объявления о запуске модульного теста:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
    static {
        System.setProperty("unit_testing", "true");
    }
    @Test
    public void test() {}
}

Тогда я могу проверить:

@PostConstruct
public void startTask() {
    if (System.getProperty("unit_testing") != null) {
        return;  // skip background tasks
    }
}

Я бы хотел знать, есть ли лучший способ сделать это.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Более привлекательный способ справиться с этим:

@Service
public class BackgroundTaskService {

    @PostConstruct
    @Profile("!test")
    public void startTask() {
        // ...
    }
}

или даже

@PostConstruct
public void startTask() {
    if(env.acceptsProfiles("!test")) {  // env is @Autowired Environment
        // start task
    }
}

Только если профиль теста не активен, @PostConstructметод запущен.В среде Spring вы хотите использовать инструменты, которые предоставляет вам Spring, поэтому используйте профиль вместо какого-либо пользовательского индикатора.

0 голосов
/ 15 мая 2018

Не рекомендуется пропускать юнит-тесты даже для простого кода, но если вы действительно хотите это сделать, вы можете взглянуть на этот поток.Вместо свойства вы можете иметь статическую логическую переменную.

Примечание для сообщества : я новичок в этом форуме, поэтому моя репутация не позволяет мне комментировать.Спасибо.

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