【问题标题】:@Sql script does not run for @test when adding @TestExecutionListeners to test suite将 @TestExecutionListeners 添加到测试套件时,@Sql 脚本不会为 @test 运行
【发布时间】: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


【解决方案1】:

当您使用注解 TestExecutionListeners 时,您会超速使用默认配置 要执行你的 sql 脚本,你需要添加这个监听器 SqlScriptsTestExecutionListener

@TestExecutionListeners( { 
  DependencyInjectionTestExecutionListener.class,
  StepScopeTestExecutionListener.class, 
  SqlScriptsTestExecutionListener 
})

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 2012-09-03
    • 2020-01-09
    • 2019-04-13
    • 1970-01-01
    • 2014-11-11
    • 2019-11-29
    • 2015-04-03
    相关资源
    最近更新 更多