我正在使用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
。