rob*_*del 12 java spring spring-test gradle spring-boot
在SpringBoot应用程序中,我想对存储库层进行一些测试.
@RunWith(SpringRunner.class)
@DataJpaTest
public class VisitRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private VisitRepository visitRepository;
...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行测试时VisitRepositoryTest,我收到一个错误DefaultConfigService
com.norc.Application中的字段defaultConfigService需要一个无法找到的类型为"com.norc.service.DefaultConfigService"的bean.
那么这需要运行Application吗?
我试着把豆子放进 DefaultConfigService去VisitRepositoryTest,但是不允许这样做.
这个类在我的应用程序中使用
@EntityScan(basePackageClasses = {Application.class, Jsr310JpaConverters.class})
@SpringBootApplication
@EnableScheduling
public class Application implements SchedulingConfigurer {
@Autowired
private DefaultConfigService defaultConfigService;
...
}
Run Code Online (Sandbox Code Playgroud)
如何管理?
在我的应用程序中,我在cron选项卡中使用此类:
@Service
public class DefaultConfigServiceImpl implements DefaultConfigService {
private final DefaultConfigRepository defaultConfigRepository;
@Autowired
public DefaultConfigServiceImpl(final DefaultConfigRepository defaultConfigRepository) {
this.defaultConfigRepository = defaultConfigRepository;
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*oll 43
问题是你@SpringBootApplication有一些关于调度的额外配置,并且通过添加那些而没有@SpringBootConfiguration测试的自定义,这样的调度要求对于一切都是必需的.
我们退一步吧.添加时@DataJpaTest,Spring Boot需要知道如何引导应用程序上下文.它需要找到您的实体和您的存储库.切片测试将以递归方式搜索@SpringBootConfiguration:首先在实际测试的包中,然后是父项,然后是父项,如果没有找到,则会抛出异常.
@SpringBootApplication是@SpringBootConfiguration这样,如果你没有做什么特别的东西,切片测试将使用您的应用为源动力的配置(这是国际海事组织,一个优秀的默认值).
切片测试不会盲目地启动你的应用程序(否则不会切片)所以我们所做的是禁用自动配置并为手头的任务定制组件扫描(仅扫描实体和存储库,并在使用时忽略所有其余部分@DataJpaTest) .这是一个问题,因为应用了应用程序配置并且调度内容应该可用.但是不扫描依赖bean.
在您的情况下,如果您想使用切片,则调度配置应移至a SchedulingConfiguration或某物(如上所述,不会使用切片进行扫描).无论如何,我认为将SchedulingConfigurer实现分开是更清晰的.如果你这样做,你会发现错误会消失.
现在让我们假设你想要那个FooService也可用的特定测试.而不是像dimitrisli建议的那样启用组件扫描(这基本上禁用了对您的配置的切片),您只需导入缺少的类
@RunWith(SpringRunner.class)
@DataJpaTest
@Import(FooService.class)
public class VisitRepositoryTest {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7590 次 |
| 最近记录: |