私はSpringブートの初心者ですが、今直面している問題は次のとおりです。
// Application.Java
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private Cluster cluster = null;
@PostConstruct
private void migrateCassandra() {
Database database = new Database(this.cluster, "foo");
MigrationTask migration = new MigrationTask(database, new MigrationRepository());
migration.migrate();
}
}
基本的に、私はbootstrap= springアプリケーションを試し、その後、いくつかのcassandra=移行を行います。
また、ユーザーモデルのリポジトリも定義しました。
// UserRepo.Java
public interface UserRepo extends CassandraRepository<User> {
}
今、私は次の簡単なテストケースを使用してレポクラスをテストしようとしています:
// UserRepoTest.Java
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = Replace.NONE)
@DataJpaTest
public class UserRepoTest {
@Autowired
private UserRepo userRepo = null;
@Autowired
private TestEntityManager entityManager = null;
@Test
public void findOne_whenUserExists_thenReturnUser() {
String id = UUID.randomUUID().toString();
User user = new User();
user.setId(id);
this.entityManager.persist(user);
assertEquals(this.userRepo.findOne(user.getId()).getId(), id);
}
@Test
public void findOne_whenUserNotExists_thenReturnNull() {
assertNull(this.userRepo.findOne(UUID.randomUUID().toString()));
}
}
テストに合格するはずですが、代わりに、「com.datastax.driver.core.Cluster」タイプの修飾Beanがありません」というエラーが表示されました。 springはcluster
オブジェクトの自動配線に失敗したようですが、なぜですか?どうすれば修正できますか?どうもありがとう!
テスト環境では、Beanがどこで定義されているかを知る必要があるため、場所を指定する必要があります。
テストクラスで、@ContextConfiguration
アノテーションを追加します。
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase(replace = Replace.NONE)
@DataJpaTest
@ContextConfiguration(classes = {YourBeans.class, MoreOfYourBeans.class})
public class UserRepoTest {
@Autowired
private UserRepo userRepo = null;
@Autowired
private TestEntityManager entityManager = null;