Тестовая конфигурация Spring Boot для сервиса, расширяющего компонент - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь настроить некоторые тесты для своих сервисных слоев в Spring Boot.

Это прекрасно работает для нормальной службы:

@RunWith(SpringRunner.class)
public class ThreadSystemServiceImplTest {
    /**
     * This configures this test so that the correct implementation is tested
     */
    @TestConfiguration
    static class ThreadSystemServiceImplTestContextConfiguration {

        @Bean
        public ThreadSystemService testService() {
            return new ThreadSystemServiceImpl();
        }
    }

    @Autowired
    private ThreadSystemService service;

    @MockBean
    private ThreadSystemRepository repository;

    ...
}

Однако у меня теперь есть сервисный наборпримерно так:

@Service
@Transactional
public class DrawingServiceImpl extends DrawingFunctions implements DrawingService {
    ....
}

DrawingFunctions имеет:

@Component
public class DrawingFunctions extends ToDoFunctions {
    /**
     * Logging Manager
     */
    private static final Logger LOGGER=LogManager.getLogger();

    @Autowired
    private CommodityPartPORepository cppoRepository;

    @Autowired
    private WorkOrderService woService;

    @Autowired
    private InventorySearch inventorySearch;

    ...
}

Когда я пытаюсь запустить тест, я получаю ошибки об отсутствии соответствующих бинов из расширенных классов, таких как WorkOrderService и InventorySearch.Один из расширенных классов также имеет

@PersistenceContext
private EntityManager em;

, что создает дополнительные проблемы.

Я могу настроить bean-компоненты в своей тестовой конфигурации так же, как bean-компонент для ThreadSystemService в рабочем примере.,Тем не менее, это будет довольно обширный список, почти все из которых мне не нужно будет ссылаться на эти тесты.Есть ли способ не включать расширенные классы для конкретного теста, или есть простой способ настроить этот вид теста?

1 Ответ

0 голосов
/ 31 декабря 2018

Вы можете использовать @DataJpaTest вместо @PersistenceContext для использования тестового EntityManager

Документация DataJpaTest

...