有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Junit:需要部分模拟类

我有一门课

class AppSave{
@Autowired
AppDaoimpl daoimpl;

@Autowired
AppService appService;

method1(){daoimpl.fewCode()}
method2(){appService.someCode()}
}

笔试课,比如

class AppSaveTest{

@Mock
AppDaoimpl daoimpl;

//What Should I do here So that I can Call someCode() of appService
AppService appService;

@InjectMocks
private AppSave appSave;

test(){
    method2()
}

仅供参考,我正在使用junit1。4.如果我模拟Appservice,那么我可以执行impl。在somCode()中


共 (1) 个答案

  1. # 1 楼答案

    您需要将您的测试标记为@SpringBootTest,以便您想要使用的SpringBean在测试中可用。然后,您可以将任何想要模拟的内容标记为@MockBean,如下所示:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class AppSaveTest{
    
        @MockBean
        AppDaoimpl daoimpl;
    
        @Autowired
        AppService appService;
    
        @Autowired
        private AppSave appSave;
    
        ...
    }
    

    或者如果你想继续使用@InjectMocks:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    class AppSaveTest{
    
        @Mock
        AppDaoimpl daoimpl;
    
        @Autowired
        AppService appService;
    
        @InjectMocks
        @Autowired
        private AppSave appSave;
    
        ...
    }