如何在Spring Batch Junit测试中模拟作家



我正在使用junit测试春季批处理应用程序:

这是我的作业XML配置:

    <!-- parse queue -->
    <batch:step id="parseQueue">
        <batch:tasklet>
            <batch:chunk
            reader="readQueue"
            processor="processQueue"
            writer="customItemWriter"
            commit-interval="100">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>

我正在测试"拨号"步骤。

我正在使用jblaunchertestutils测试以下步骤:

joblaunchertestutils.launchstep(" parsequeue"(;

问题是它运行完整的步骤代码。我的意思是读者,处理器和作家。我想跳过作家的执行。

有办法做到吗?

关于在春季批次嘲笑"作家"的任何建议?

我试图嘲笑作家。它没有模拟,真正的作者实现被调用。通常,它会奏效,但似乎与Spring Batch一起工作。

预先感谢。

以下是我的测试类的代码:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
        "classpath:/job/qhandler-job.xml",
        "classpath:/spring/qhandler-applicationContext.xml" })
public class TestReader {
    @Autowired
    private JobLauncherTestUtils jobLauncherTestUtils;
    @Mock
    CustomItemWriter writer;
    @InjectMocks
    private ReadQueueMsgFromWs reader;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }
    @Test
    public void testReader() throws UnexpectedInputException, ParseException, NonTransientResourceException, Exception
    {
        jobLauncherTestUtils.launchStep("parseQueue");
    }
}

在IT方案中,您使用@MockBean来存根容器托管bean。

尝试以下操作:

@MockBean
CustomItemWriter writer;
@Autowired
private ReadQueueMsgFromWs reader;

您也不需要在此处使用@InjectMocks

相关内容

  • 没有找到相关文章

最新更新