私は春バッチアプリケーションのためのPoCをやっています。これまでのところ、すべてが正常に動作しますが、私はDatasource
をピックアップしてテスト(複数可)を取得することはできません、それは常にで失敗します。春バッチテストケースは春のプロファイルを無視します
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 42 more
これは私のapplication.yml
ファイルです:
server:
port: ${port:9080}
spring:
http:
encoding:
charset: UTF-8
enabled: true
force: true
output:
ansi:
enabled: detect
profiles: # default, development, production
active: default, development
---
spring:
datasource:
driver-class-name: org.h2.Driver
sql-script-encoding: UTF-8
url: jdbc:h2:mem:JavaSpringBootBatch;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL
username: sa
password:
h2:
console:
enabled: true
path: /h2-console
profiles: development
---
server:
port: ${port:80}
spring:
datasource:
initialize: false
# ...
profiles: production
.. .AND私のテストクラス(ES):
@Configuration
@Import(AppConfig.class) // This eventually "imports" the app's config
public class TestConfig {
@Bean
public JobLauncherTestUtils jobLauncherTestUtils() {
return new JobLauncherTestUtils();
}
}
@ActiveProfiles("development")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
//@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
public class PlayerItemBatchTest {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Test
public void readProcessWriteBatchProcess() throws Exception {
final JobExecution jobExecution = jobLauncherTestUtils.launchJob();
Assertions.assertThat(jobLauncherTestUtils.launchJob().getStatus()).isEqualTo(BatchStatus.COMPLETED);
}
}
@Configuration
public class BatchConfig { // Included with AppConfig
private final DataSource dataSource;
@Autowired
public BatchConfig(final DataSource dataSource) {
this.dataSource = dataSource;
}
// ...
}
私は自分のアプリケーションを起動すると、私ははっきりdatasource
私はYAMLから私のdevelopment
プロファイルを持っているすべてのもの(すべての設定)を持っていることがわかります。テストケースを実行しようとすると、「データソースを見つけることができません」というエラーが表示されます。
テストクラスに '@ EnableConfigurationProperties'アノテーションを追加しようとしましたか? –
@AlexSaunin ...ちょうどそれをしましたが、何も違いはありません。同じタイプのエラーメッセージ: 'タイプ 'javax.sql.DataSource'の利用可能なBeanがありません。 –