gpt4 book ai didi

java - Spring应用程序运行但无法在测试中创建bean

转载 作者:行者123 更新时间:2023-12-02 11:25:53 25 4
gpt4 key购买 nike

我正在使用 Spring 编写一个应用程序,并且我想使用单元测试。当我运行我的应用程序时,没有发生错误或异常。但是当我想运行“gradle test”时,到处都有 UnsatisifiedDependencyExceptions。

@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(AuthenticationController.class)
@ContextConfiguration(classes = {MockMvc.class, TokenHandler.class, LoginService.class, UserService.class})
public class AuthenticationControllerTest {

@Autowired private MockMvc mockMvc;
@Autowired private TokenHandler tokenHandler;
@Autowired private LoginService loginService;
@Autowired private UserService userService;

@Value("${server.port}") private Integer serverPort;

private String username;
private String email;
private String password;

private UserEntity userEntity;
private String token;

@Before
public void setUp(){
this.username = UUID.randomUUID().toString();
this.email = this.username + "@test.com";
this.password = UUID.randomUUID().toString();
}

@Test
public void a0_register() throws Exception {
RegisterDTO registerDTO = new RegisterDTO();
registerDTO.setUsername(this.username);
registerDTO.setEmail(this.email);
registerDTO.setPassword(this.password);

this.mockMvc.perform(
MockMvcRequestBuilders.post(URI.create("/authentication/register"))
.content(JSON.asJsonString(registerDTO))
.contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(status().isOk())
.andExpect(content().string("0"));

this.userEntity = this.userService.findAll().stream().filter(e->e.getEmail().equals(email)).findFirst().orElse(null);

assertNotNull(userEntity);
}
}

以下是抛出的异常之一的示例:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginService': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'net.roomono.administration.Database.Repository.Log.LoginRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:729)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1270)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1127)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1065)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:815)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:721)
... 67 more

最佳答案

此行需要修复:

@ContextConfiguration(classes = {MockMvc.class, TokenHandler.class, LoginService.class, UserService.class})

不要在此处列出服务或 Bean 类。相反,创建一个配置类来配置 bean。如:

@Configuration
public class AppConfig {
@Bean
public LoginService loginService() {
return new LoginService();
}
...
}

然后,使用它:

@ContextConfiguration(classes = {AppConfig.class})

关于java - Spring应用程序运行但无法在测试中创建bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636334/

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