私は春-データ-JPAアプリに古いJDBCアプリを変換していると私は、最初のテストに取り組んでいる:私はまた、コンテキストコンフィギュレーションの注釈を追加した場合にも、私はそれを動作させることができました今。 @DataJpaTest
は理論的にそれを除外すべきですが、セキュリティ設定をブートストラップしようとすると、私はスプリングブートからセキュリティモジュールのインスタンス化エラーを見てきました。ここでドキュメントに続き
セキュリティ・モジュールとの私の問題は、おそらく私は(下記の私のPropertySpringConfig
輸入経由)PropertySourcesPlaceholderConfigurer
を使用して継承された既存の実装から茎
:
http://docs.spring.io/spring-boot/docs/1.4.x/reference/htmlsingle/#test-auto-configuration
とあなた@ LiviaMorunianuの答えにコメントしたので、私は春のブートの例外を回避し、自動設定された組み込みDBでJUnitを動作させることができました。
私のメイン/プロダクションスプリングブートブートストラップクラスは、テストから除外したいものを含め、すべてをブートストラップします。したがって、@DataJpaTest
を使用する代わりに、私は何をしているのかを多くコピーし、@Import
を使用して、すべてのテスト/ライブセットアップで使用される集中構成を導入しました。
私は、最初にcom.mycompany.repositories
に基づいたテストを実行していて、com.mycompany.entities
のエンティティを見つけられなかったので、私が使用するパッケージ構造のために問題が発生しました。
以下は関連するクラスです。
JUnitテスト
@RunWith(SpringRunner.class)
@Transactional
@Import({TestConfiguration.class, LiveConfiguration.class})
public class ForecastRepositoryTests {
@Autowired
ForecastRepository repository;
Forecast forecast;
@Before
public void setUp() {
forecast = createDummyForecast(TEST_NAME, 12345L);
}
@Test
public void testFindSavedForecastById() {
forecast = repository.save(forecast);
assertThat(repository.findOne(forecast.getId()), is(forecast));
}
ライブの構成
@Configuration
@EnableJpaRepositories(basePackages = {"com.mycompany.repository"})
@EntityScan(basePackages = {"com.mycompany.entity"})
@Import({PropertySpringConfig.class})
public class LiveConfiguration {}
テスト構成
@OverrideAutoConfiguration(enabled = false)
@ImportAutoConfiguration(value = {
CacheAutoConfiguration.class,
JpaRepositoriesAutoConfiguration.class,
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
TransactionAutoConfiguration.class,
TestDatabaseAutoConfiguration.class,
TestEntityManagerAutoConfiguration.class })
public class TestConfiguration {
// lots of bean definitions...
}
PropertySpringConfig
@Configuration
public class PropertySpringConfig {
@Bean
static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
throws IOException {
return new CorePropertySourcesPlaceholderConfigurer(
System.getProperties());
}
}
、私のアプリケーション定義から自動設定を除外することで、同じ問題を解決するには、virgium03助け@ましたか?私も同様の問題に取り組んでいます。 – Adam