spring启动测试“没有可用的合格bean”

我是Spring Boot的新手,但这是我现在面临的问题:

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

}

}

因此,基本上,我正在尝试引导spring应用程序,然后进行一些cassandra迁移。

我还为我的用户模型定义了一个存储库:

// UserRepo.java

public interface UserRepo extends CassandraRepository<User> {

}

现在,我正在尝试使用以下简单测试用例来测试我的repo类:

// 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”。看起来弹簧无法自动装配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;

以上是 spring启动测试“没有可用的合格bean” 的全部内容, 来源链接: utcz.com/qa/428786.html

回到顶部