Java SpringBoot和JUnit-测试服务类-无法加载应用程序上下文
我试图在Spring引导应用程序中的服务类上运行单元测试 我想试试这个测试Java SpringBoot和JUnit-测试服务类-无法加载应用程序上下文,java,spring-boot,junit,Java,Spring Boot,Junit,我试图在Spring引导应用程序中的服务类上运行单元测试 我想试试这个测试 @RunWith(SpringRunner.class) @SpringBootTest(classes=Application.class) //my @SpringBootApplication class public class UserServiceTest { //i'm testing my UserService implementation @TestConfiguration sta
@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class) //my @SpringBootApplication class
public class UserServiceTest { //i'm testing my UserService implementation
@TestConfiguration
static class UserServiceContextConfiguration {
@Bean
public IUserService service() {
return new UserService();
}
}
@Autowired
private IUserService service;
@MockBean
private UserRepository repository;
@Before
public void setUp() {
User me = new User();
me.setEmail("admin@admin.com");
Mockito.when(repository.findByEmail(me.getEmail())).thenReturn(me);
}
@Test
public void whenValidEmail_thenFindUser() {
String email = "admin@admin.com";
User found = service.findByEmail(email);
assertThat(found.getEmail()).isEqualTo(email);
}
}
但是当启动测试时,我得到了这个异常
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.myapp.service.UserServiceTest': Unsatisfied dependency expressed through field 'service'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.myapp.service.interfaces.IUserService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
也许我不清楚,但是
@TestConfiguration
应该允许我从应用程序中定义我的bean,以便在测试中使用它们,@springbootest应该为测试环境从应用程序加载所有应用程序上下文…通过提供类=应用程序。类
您关闭了内部应用程序的自动扫描配置类
移除explicit classes参数-SpringRunner将在当前包和父包中搜索SpringBootApplication注释类,并搜索内部配置类
或者将其添加到@SpringBootTest中
@SpringBootTest(classes= {Application.class, UserServiceContextConfiguration.class })