Je suis un débutant dans Spring Boot, mais voici le problème auquel je suis confronté maintenant:
// 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();
}
}
Donc, fondamentalement, j'essaie de bootstrap une application Spring, et après cela, faire des migrations cassandra).
J'ai également défini un référentiel pour mon modèle utilisateur:
// UserRepo.Java
public interface UserRepo extends CassandraRepository<User> {
}
Maintenant, j'essaie de tester ma classe repo en utilisant le cas de test simple suivant:
// 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()));
}
}
Je m'attendrais à ce que le test réussisse, mais à la place, j'ai eu une erreur disant "Pas de bean de qualification de type 'com.datastax.driver.core.Cluster' disponible". Il semble que Spring n'ait pas câblé automatiquement l'objet cluster
, mais pourquoi? Comment puis-je réparer ça? Merci beaucoup!
L'environnement de test doit savoir où vos beans sont définis, vous devez donc lui indiquer l'emplacement.
Dans votre classe de test, ajoutez le @ContextConfiguration
annotation:
@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;