小编Mis*_*aJi的帖子

使用 lombok @RequiredArgsConstructor(onConstructor = @__(@Autowired)) 时,Mockito when().thenReturn() 的行为不符合预期

我有 Spring 课说

@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
class MainServiceImpl implements MainService {
    private final InternalService internalService;

    public Set<String> do(String anything) {
      Set<String> relevent = internalService.finaIntern(anything);
      return relevent;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在编写单元测试用例如下

@RunWith(MockitoJUnitRunner.class)
class TestMainServiceImpl {

    @InjectMocks
    private MainServiceImpl service;

    @Mock
    InternalService internalService;   

    @Before
    public void init(){
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testDo() { 
        Set<String> setData = new HashSet<>();
        setData.add("ABC");
        String a ="a";
        when(internalService.finaIntern(any(String.class))
                                  .thenReturn(setData);
        Set<String> result = service.do(a);
        assertTrue(!result.isEmpty());
    }

}
Run Code Online (Sandbox Code Playgroud)

在这里我的测试用例失败,但如果我删除的最终形式MainServiceImpl,做一个明确的@Autowired像下面

@Component
class MainServiceImpl implements MainService …
Run Code Online (Sandbox Code Playgroud)

java spring junit4 mockito lombok

2
推荐指数
1
解决办法
1393
查看次数

标签 统计

java ×1

junit4 ×1

lombok ×1

mockito ×1

spring ×1