【发布时间】:2016-06-14 16:59:47
【问题描述】:
我正在测试一个 Spring Batch ItemProcessor,它从 DB 中读取一个值。
按照Testing Step-Scoped Components 页面上的建议,我将 @TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class }) 添加到测试套件注释中:
@ContextConfiguration(locations = { "classpath:spring/context-configuration.xml" })
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
@RunWith(SpringJUnit4ClassRunner.class)
public class CustomItemProcessorTest
{
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Autowired
private ItemProcessor<InputClass, OutputClass> customItemProcessor;
@Test
@Sql(scripts = {"insertDataToBeRetrievedByCustomItemProcessor.sql" },
config = @SqlConfig(dataSource = "dataSource"))
public void assertThatCustomItemProcessorProcessorIsRetrievingStillBirthSasEtlObject() throws Exception
{
OutputClass outputObject = customItemProcessor.process(inputClassObject);
}
}
我遇到的问题是上面的行: @TestExecutionListeners... 正在阻止 @Sql(scripts =... 命令执行。
customItemProcessor 正在轻松地从数据库中读取值。
为什么上面的注释会阻止@Sql 脚本运行,我该如何解决这个问题?
【问题讨论】:
-
您可以尝试将
MERGE_WITH_DEFAULTS作为mergeMode 添加到测试执行侦听器吗? -
您好 Roman,您的建议解决了我的问题。如果您将其添加为答案,我会将其标记为正确答案并对其进行投票。非常感谢,卢卡斯
标签: java spring spring-batch junit4