我试图使用JUnit在Spring boot中对Spring批处理作业进行单元测试。我编写了这个测试类,我想在其中监视bean ItemReader:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@ActiveProfiles({"dev", "batch", "test-jobs"})
public class BatchJobTest {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
private @Autowired @Qualifier("contactDownloadAckJob") Job contactDownloadAckTaskJob;
@SpyBean
private ItemReader<CrsOscContact> reader;
@Test
public void testJob() throws Exception {
given(this.reader.read()).willReturn(new CrsOscContact());
//... blah blah blah
}
}
当我运行这个测试时,@SpyBean注释似乎没有完成它的工作,它应该代理上下文中已经存在的ItemReader bean,因此我获得了(正确的)异常,因为根据定义,如果找不到该bean,它会尝试实例化该类型的新bean(我已经指定了一个接口):
org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.batch.item.ItemReader]: Specified class is an interface
我很确定bean(ItemReader类型)已经在上下文中,因为:
有什么提示吗?非常感谢。
这是一个Spring Core问题,现已修复。
https://github.com/spring-projects/spring-boot/issues/7625
https://jira.spring.io/browse/SPR-15011
我想不通..出于某种原因,Spring Junit没有将我的bean添加到上下文中。请砰!! 由:org.springframework.beans.factory.nosuchBeanDefinitionException引起:没有类型为“com.api.demo.store.FileStorage”的合格bean可用:需要至少有1个bean作为autowire候选bean。依赖项注释:{@or
这些文本文件包含数行,每行16个数字。预演 我不明白!这些应该是图像(像素值的矩阵)吗? 代表链接:https://github.com/Kurispy/neuralnet
我有三节课。 > 一个抽象类,abstractA有一个受保护的构造函数 一个类扩展了抽象类,父类有两个构造函数 一个类扩展父类,子类有一个构造函数 这是从抽象类扩展而来的父类 这是从父类扩展而来的子类 自定义组件看起来像这样 所以,当spring为特定测试实例化所有bean时,它会正确地实例化子bean。当父bean被实例化时,它得到2个bean[父和子]。所以,我最终会出错, 类型父的多个bea
我正在我的应用程序中使用ViewPager进行滑动效果。 我使用pager.setPageMargin()使下一个视图和上一个视图可见,不幸的是我的下一个视图与当前视图重叠。 下面是我的代码 我在用寻呼机里的片段。我得到的输出与这个线程的附加,但需要视图被适当地放置与out over lapping 上图所标部分应在中心卡后面。
当应用程序启动时,会引发两个上下文:一个用于事件,另一个用于事件,并且一切正常,派遣员上下文使用“父”bean而不是创建它自己的。当我使用(我使用rest api请求调用它)启动Spring上下文刷新时,只发送了一个ContextRenewEvent(第一个),当我尝试访问任何servlet组件(rest控制器)时,派遣员开始创建自己的bean,尽管刷新后创建了“主”bean。再次没有为派遣员上下
这类似于@inject每次使用时都注入一个新实例,但我在那个线程中找不到答案。 我对CDI和JSF都很陌生,我正在尝试使用CDI而不是JSF注释。我想从MemberController检索凭据。bean本身(两者)都是从jsf页面调用的。问题是MemberController中的Credential实例的名称/密码总是为空,即使我确认Credential中的setter被命中。我不明白为什么有两个