我的项目中有一堆测试,它们都用@SpringBootTest注释,因此加载了一个SpringBoot上下文。
最近,我重构了一个测试,在这个测试中,我想要一个更小的范围(它是关于camunda的进程复盖率)到@RunWith(SpringJunit4ClassRunner.class)。因为这意味着没有上下文是自动加载的,所以我用静态内部类配置“手动”创建了一些bean。整个测试如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
ExternalConfiguration.class, MyTest.InternalConfiguration.class
})
public class MyTest{
@Autowired
private SomeBean someInternalBean;
@Configuration
public static class InternalConfiguration{
@Bean
SomeBean someInternalBean() {
return mock(SomeBean .class);
}
}
//Tests
The bean 'someInternalBean', defined in class path resource [.../MyTest$InternalConfiguration.class], could not be registered. A bean with that name has already been defined in file [.../SomeBean.class] and overriding is disabled.
我不能允许bean重写,因为我的mock bean可能会重写自动创建的bean(我已经尝试过了)。
我该如何规避?我希望我的SpringJUnit4ClassRunner-test及其内部配置不影响我的其他@SpringBootTest-test。我已经尝试过使用@conditionalonmissingBean使配置bean具有条件性,但这并不奏效。
这些内部配置类不应该用@configuration进行注释。删除注释可以使手工bean生成仍然有效,并且ComponentScan不再拾取配置。
问题内容: 突然在JUnit测试期间这种情况一直发生。一切正常,我编写了一些新测试,并且发生了此错误。如果我还原它,它不会消失。这是为什么? 问题答案: 您(直接或间接)编写的新测试使用 使用Log4j记录的类 。 需要配置Log4J才能使此日志正常运行。 将 log4j.properties (或log4j.xml)文件放在 测试类路径 的 根目录中 。 它应该具有一些基本配置,例如 默认情况下
我有一个测试套件: 一类: B类: 现在的问题是位于下, 和 类正在。如果我评论带有测试服运行正常,但未注释,我得到: java.lang.非法状态异常: 无法加载应用程序上下文 在org . spring framework . test . context . cache . defaultcacheawarecontextloaderdelegate . load context(defau
我有一个SpringBootTest集成测试,用于我正在开发的某个框架,该框架使用与SpringBootApplication内置的jpa。我添加了支持在没有jpa的情况下使用框架,为此我需要创建一个不使用jpa的不同的SpringBootApplication。 现在,单独运行时的测试类工作得很好,但是当我一起运行它时(运行不同Spring应用程序的不同测试类),第二顺序测试类失败,因为我似乎没
DAO类的相关方面如下 我的src/test/resources/application.properties文件如下所示 在Eclipse中作为JUnit测试运行的跟踪 应用程序结构 -SRC ----application.java ----COM ----Hitstpa ----application.properties --测试 ---爪哇
我们有一个库,为了自动配置库,我们使用spring.factories文件(),它提供了自动配置我的库的类。 参考资料 : https://docs.spring.io/spring-boot/docs/1.4.0.M3/reference/htmlsingle/#boot-features-custom-starter 我在spring.factories文件中有以下配置: 我的理解是sprin
这是一个很好的例子来解决这个问题。 但是当我在应用程序上下文中遇到相同的问题但没有这些应答器时: 使用注释解决了所有问题,但在我的示例中,我们没有使用允许使用注释的应答器。 我搜索了很多,发现有人在bean声明中谈论属性,我需要更多关于它的解释。