gpt4 book ai didi

mockito - Spring 批处理作业的端到端测试用例

转载 作者:行者123 更新时间:2023-12-02 15:22:42 25 4
gpt4 key购买 nike

我有一个使用 Spring Batch 的应用程序。我想编写一个可以端到端测试批处理作业的测试用例。我一直在探索同样的各种选择。我检查了协和测试用例是否有用,但我不确定这是否是测试 spring-batch 作业的理想方法。到目前为止,我认为集成测试用例应该最适合我的情况。我想知道测试我的场景的理想方法是什么。

<batch:job id="batch-job">

<batch:step id="cleanupData" next="populateExchRates">
<batch:tasklet ref="dataCleanupTasklet" />
</batch:step>

<batch:step id="populateExchRates" next="populateCache">
<batch:tasklet ref="populateExchRatesDBTasklet" />
</batch:step>

<batch:step id="populateCache" next="ExternalDbQuery">
<batch:tasklet ref="populateFxRatesCacheTasklet" />
</batch:step>

<batch:step id="ExternalDbQuery" next="...">
<batch:tasklet ref="ExternalDBQueryTasklet" />
</batch:step>

...
</batch:job>

我们有如上定义的批处理作业,有20多个步骤,其中包括与外部系统的接口(interface)(>5个这样的步骤),还有步骤读取器等。

在开发集成测试用例时,我正在考虑使用 spring-batch-test API 和 Mockito,以便我可以模拟涉及外部系统调用的步骤。使用这种方法,我必须在 spring 配置本身中创建模拟对象( Injecting Mockito mocks into a Spring bean )。我不确定的是,如果我使用 spring 如下配置它们,我将如何模拟模拟 bean 的方法调用。

<bean id="dao" class="org.mockito.Mockito" factory-method="mock"> 
<constructor-arg value="com.package.Dao" />
</bean>

我不确定我是否可以清楚地解释我的情况。如果您对测试 Spring Batch 作业的 E2E 流程有任何其他更好的意见,请提出建议,并且您是否可以对上述方法提供任何说明,这将会有所帮助。

最佳答案

你的方法对我来说似乎有效。我多次使用过类似的设置。只需从测试中设置 Spring 上下文并使用 JobLauncherTestUtils 来处理您的作业。

需要考虑的一件事是模拟什么。如果多个连续步骤从同一数据源读取和写入相同的数据,则模拟这些数据可能会导致测试中出现大量模拟配置。也许为这些步骤设置内存数据库会更容易。这取决于您的实现细节。

关于你的模拟的设置...您可以简单地将模拟自动连接到测试中。

@Autowired
private Dao mockedDao;

然后您可以像配置任何模拟一样简单地配置该模拟。

when(dao.findById(any())).thenReturn(something);

关于mockito - Spring 批处理作业的端到端测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com