gpt4 book ai didi

java - Spring 开机测试 "No qualifying bean of type available"

转载 作者:IT老高 更新时间:2023-10-28 13:53:39 30 4
gpt4 key购买 nike

我是 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”。看起来 spring 无法 Autowiring 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;

关于java - Spring 开机测试 "No qualifying bean of type available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44925324/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com