我在我的项目中创建了一个新测试。对于这个,我@ContextConfiguration在与测试相同的类中使用了一个内部配置类。但是现在我的其他测试都失败了,因为它们正在使用新测试的配置。
这怎么可能,我认为不可能从外部使用测试类内部的配置。
当我从新测试中删除内部配置时,所有其他测试再次正常工作。
@DataJpaTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ContextConfiguration(classes = EventServiceTest.Config.class)
class EventServiceTest {
@Configuration
@Import({WorkingTimeConfig.class,
PartnerConfig.class,
ProjectConfig.class,
UserConfig.class,
AccountGroupConfig.class,
LanguageConfig.class,
CountryConfig.class,
EventConfig.class,
LanguageConfig.class})
static class Config {
@SuppressWarnings("unused")
@MockBean(reset = MockReset.BEFORE)
private UserAttendanceBoard userAttendanceBoard;
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public ImpersonateProperties impersonateProperties() {
return new ImpersonateProperties();
}
}
...
}
现在这个测试不起作用:
@Import(MailSenderAutoConfiguration.class)
@DataJpaTest
@Transactional
public class ServiceTimeEntryServiceTest {
private ServiceTimeService serviceTimeService;
private ServiceTimeEntryRepository repository;
@Autowired
public ServiceTimeEntryServiceTest(ServiceTimeService serviceTimeService, ServiceTimeEntryRepository repository) {
this.serviceTimeService = serviceTimeService;
this.repository = repository;
}
@Test
void getAllByAccountId() {...}
如果我尝试开始我的旧测试,则会抛出此错误:
org.springframework.beans.factory.support.BeanDefinitionOverrideException:在类路径资源 [de/hlservices/timetracking/api/business/event/EventServiceTest$Config.class] 中定义了名称为“passwordEncoder”的无效 bean 定义:无法注册 bean 定义
感谢您的帮助 :)
蝴蝶不菲
明月笑刀无情
相关分类