【发布时间】:2018-05-07 20:39:15
【问题描述】:
我有三个@Configuration文件,如下:
MessageGatewayConfiguration.class
@Configuration
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages = {
"xyz.idtlabs.smsgateway.*"
})
@EntityScan(basePackageClasses = {
AbstractPersistableCustom.class,
SMSBridge.class,
SMSBridgeConfig.class,
SMSMessage.class,
Tenant.class
})
@ComponentScan(basePackages = {
"xyz.idtlabs.smsgateway.*"
})
public class MessageGatewayConfiguration {
public MessageGatewayConfiguration() {
super();
}
@Bean
public SimpleApplicationEventMulticaster applicationEventMulticaster() {
final SimpleApplicationEventMulticaster multicaster = new SimpleApplicationEventMulticaster();
multicaster.setTaskExecutor(new SimpleAsyncTaskExecutor());
return multicaster;
}
@Bean
public HandlerExceptionResolver sentryExceptionResolver() {
return new io.sentry.spring.SentryExceptionResolver();
}
}
SpringConfiguration.class
@Configuration
@EnableMetrics
public class SpringConfiguringClass extends MetricsConfigurerAdapter {
@Override
public void configureReporters(MetricRegistry metricRegistry) {
// registerReporter allows the MetricsConfigurerAdapter to
// shut down the reporter when the Spring context is closed
registerReporter(ConsoleReporter
.forRegistry(metricRegistry)
.build())
.start(1, TimeUnit.MINUTES);
}
}
SmsFireboltConfiguration.class
@Configuration
@Import({ MessageGatewayConfiguration.class, SpringConfiguringClass.class })
public class SmsFireboltConfiguration {
}
主要应用文件如下:
public class MessageGateway {
public MessageGateway() {
super();
}
public static void main(String[] args) {
SpringApplication.run(SmsFireboltConfiguration.class, args);
}
}
但是,我的 Spring @DataJpaTest 集成测试没有自动装配 TenantRepository JPA 存储库,“没有可用的 'xyz.idtlabs.smsgateway.tenants.repository.TenantRepository' 类型的合格 bean:预计至少有 1 个合格的 bean自动接线候选”错误。 其代码如下:
@DataJpaTest
@RunWith(SpringRunner.class)
@ContextConfiguration(classes=MessageGateway.class)
@AutoConfigureTestDatabase(connection = H2)
public class SmsMessageServiceIntegrationTest {
@Autowired
private TenantRepository tenantRepository;
@After
public void tearDown() throws Exception {
tenantRepository.deleteAll();
}
@Test
//some test
}
关于为什么会这样的任何可能的想法?我尝试了多种设置@DataJpaTest 文件的组合,但无济于事。
【问题讨论】:
-
TenantRepository 类有一个注解@Repository 对吗?
-
请发布异常的完整堆栈跟踪
-
是的@AmrAlaa,确实如此。还有 Jens Schauder,感谢您的帮助!我遵循了 Sam Brenna 在下面的建议,它解决了我的问题。非常感谢!
标签: spring spring-data-jpa spring-test