我正在尝试在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
)中得到关于没有合格bean的错误。扩展类之一也有
@PersistenceContext
private EntityManager em;
这似乎会带来更多问题。
我可以在测试配置中设置Bean,就像工作示例中的ThreadSystemService
的Bean一样。但是,这将是一个非常详尽的列表,这些测试几乎不需要引用所有的列表。有没有办法不为特定测试包括扩展类,还是有一种简便的方法来设置这种测试?
答案 0 :(得分:0)
您可以使用@DataJpaTest而不是@PersistenceContext来使用测试EntityManager