我很新手到春天開機,但這裏是我現在面臨的問題:春天開機測試「無類型的排位豆可用」
// 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();
}
}
所以基本上,我試圖引導一個春天的應用程序,然後,做一些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()));
}
}
我期望測試通過,但相反,我得到一個錯誤,說「沒有合格的bean類型'com.datastax.driver.core.Cluster'可用」。它看起來像春天沒有自動裝配的對象,但爲什麼呢?我該如何解決?非常感謝!
如果您看到類簇的豆在你的代碼(實現一個接口集羣),可autovired? – Jens
一個可能的解決方案:刪除這兩行:'@Autowired private cluster cluster = null;' – Jens
我沒有定義任何Class類的Bean,它應該由spring-boot-starter-data-cassandra提供。如果我運行我的應用程序,它就會起作用。 – fengye87