小编use*_*123的帖子

@ExtendWith(SpringExtension.class) 和 @ExtendWith(MockitoExtension.class) 有什么区别?

我正在使用@RunWith(MockitoJUnitRunner.class)mockito 进行 junit 测试。但是现在我正在使用 spring-boot 和 JUnit 5。
这两个注释之间有什么区别?
我可以只@ExtendWith(SpringExtension.class)用来模拟我的对象吗?

java mockito spring-boot junit5

13
推荐指数
1
解决办法
7306
查看次数

Spring-Batch:测试自定义 itemReader

我正在尝试测试我的自定义 itemReader :

@Bean
@StepScope
MyMultiLineItemReader itemReader(@Value("#{stepExecutionContext['fileName']}") String filename) throws MalformedURLException {
MyMultiLineItemReader itemReader = new MyMultiLineItemReader();
itemReader.setDelegate(myFlatFileItemReader(filename));

return itemReader;
}

@Bean
@StepScope
public FlatFileItemReader<String> myFlatFileItemReader(@Value("#{stepExecutionContext['fileName']}") String filename) throws MalformedURLException {
return new FlatFileItemReaderBuilder<String>()
.name("myFlatFileItemReader")
.resource(new UrlResource(filename))
.lineMapper(new PassThroughLineMapper())
.build();
}
Run Code Online (Sandbox Code Playgroud)

我的测试课看起来像

@Test
public void givenMockedStep_whenReaderCalled_thenSuccess() throws Exception {
    // given
    JobExecution jobExecution = new JobExecution(5l);
    ExecutionContext ctx = new ExecutionContext();
    ctx.put("fileName", "src/main/resources/data/input.txt");
    jobExecution.setExecutionContext(ctx);

    JobSynchronizationManager.register(jobExecution);
    StepExecution stepExecution = MetaDataInstanceFactory.createStepExecution(ctx);

    // when
    StepScopeTestUtils.doInStepScope(stepExecution, () -> {
     ...
     });
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试用例时,该过程失败,因为 fileName …

java junit spring-batch

3
推荐指数
1
解决办法
6159
查看次数

标签 统计

java ×2

junit ×1

junit5 ×1

mockito ×1

spring-batch ×1

spring-boot ×1