Printemps de démarrage test “Pas de qualification bean de type disponible”

Je suis assez débutant au Printemps de démarrage, mais voici le problème que je me pose 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, je suis en train de démarrer un traitement au printemps, et après cela, faire un peu de cassandra migrations.

J'ai aussi défini un référentiel pour mon modèle d'utilisateur:

//UserRepo.java
public interface UserRepo extends CassandraRepository<User> {
}

Maintenant je suis en train de tester mes pensions de classe à l'aide de simples cas de test:

//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()));
  }
}

J'attendrais le test à passer, mais au lieu de cela, j'ai eu une erreur en disant "Non admissible bean de type" com.datastax.le pilote.de base.Cluster "disponible". On dirait le printemps a échoué à autowire la cluster objet, mais pourquoi est-ce? Comment puis-je résoudre ce problème? Merci beaucoup!

  • Là où vous voyez un bean de classe cluster (mise en œuvre d'une Interface de Cluster) dans votre code qui peut être autovired??
  • une Solution possible: supprimer ces deux lignes: @Autowired private Cluster cluster = null;
  • Je n'ai pas défini les bean de Classe Cluster, il est censé être assuré par le ressort-amorçage-starter-données-cassandra. Et si je lance mon application, elle fonctionne, tout simplement.
  • ensuite, il y a quelque chose dans la testconfiguration manquant
InformationsquelleAutor fengye87 | 2017-07-05