- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中创建了一个新测试。对于这个,我使用了 @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: Invalid bean definition with name 'passwordEncoder' defined in class path resource [de/hlservices/timetracking/api/business/event/EventServiceTest$Config.class]: Cannot register bean definition
感谢您的帮助:)
最佳答案
正如 Maciej Kowalski 所指出的,这个问题可能与 @ComponentScan
注释有关。
如果您正在使用它,请考虑添加一个 excludeFilter
以确保您只得到您真正想要的。您可能希望排除由 @ComponentScan
注释找到的其他配置类:
@ComponentScan(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,
value = Configuration.class)
})
顺便说一句:我真的推荐使用 IntelliJ IDEA 作为 IDE,因为它有很棒的 spring 支持。您可以通过单击代码左侧的绿色图标(第 9 行)来查找通过扫描找到的 bean/组件:
这使得调试扫描问题变得更加容易。
关于java - 测试使用其他测试的内部 ContextConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57304826/
假设我有一个这样的父测试类: @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { MyCus
如果我有 xml 配置文件,我会这样写: @ContextConfiguration(locations = "testContext.xml") 但是如果我通过注释标记我的bean,我必须写什么?
我有一个 spring 单元测试,它扩展了其他项目(tests-common)中的其他测试。我的上下文文件 (my-context.xml) 与 MyTest 位于同一包中。基本上下文文件(“base
我正在尝试创建某种集成测试环境,但当测试上下文框架没有为我的 bean 创建事务代理时遇到问题。我的代码: JUnit 类:FileServiceImplTest @RunWith(SpringJUn
我刚刚空降到一个 spring 项目中,他们不相信单元测试。 我正在尝试建立自己的单元测试环境。 我可以知道注释 @ContextConfiguration 指的是什么吗? @Repository 呢
我在我的项目中创建了一个新测试。对于这个,我使用了 @ContextConfiguration 和一个内部配置类,与测试在同一个类中。但是现在我的其他测试都失败了,因为它们正在使用新测试的配置。 这怎
我正在使用 @ContextConfiguration 注释来管理我的应用程序中的配置。创建配置以便它们仅提供由给定模块公开的 beans。因此,给定模块使用的一些 bean 不一定直接导入。示例:
我正在运行下一个测试: import static org.junit.Assert.assertEquals; import org.junit.Test; import org.junit.run
我使用以下配置进行数据库集成测试: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "class
我正在学习Java和Spring MVC。我找到了这段代码: @ContextConfiguration(locations = { "classpath: com/myname/spring/jun
我正在从我的存储库项目编写集成测试,它需要加载我的基础设施项目的 IT 测试上下文,但由于某些原因,它因一些奇怪的异常而失败 java.lang.ArrayStoreException: sun.r
在下面的测试类中 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.fa
为了 DRY,我想在父类中定义我的 ContextConfiguration 并让我的所有测试类继承它,如下所示: 父类: package org.my; @RunWith(SpringJUnit4C
在我们的项目中,我们正在编写一个测试来检查 Controller 是否返回正确的模型 View @Test public void controllerReturnsModelToOverzi
我有这个空的测试类 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class FindHandlerTest
当我的测试类作为 JUnit Test 运行时,控制台显示: INFO: Neither @ContextConfiguration nor @ContextHierarchy found for t
我目前正在使用 springockito-annotations,这需要 @RunWith 和 @ContextConfiguration 注释才能工作。我想将这些注释放在我的测试的父类(super
我们有使用元注释的测试类: @WebAppConfiguration @ContextHierarchy({ @ContextConfiguration(locations = {"/web/
我遇到过这样的情况。我有一个 junit 测试类,因为我提到了 @ContextConfiguration但是该类从主/资源和其中包含的其他文件(DataSource.xml 和Hibernate.x
我想知道是否有一种方法可以减少我们当前为集成测试编写的样板文件的数量。 罪魁祸首是 ContextConfiguration,我们当前向其中发送了 7 个不同的字符串。 我们的一项测试如下所示(有效负
我是一名优秀的程序员,十分优秀!