Java Junit:需要部分模拟类

Java Junit:需要部分模拟类,java,spring-boot,junit,mockito,Java,Spring Boot,Junit,Mockito,我有一门课 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 someCod

我有一门课

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()
}
笔试课,比如

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()。

中,您需要将测试标记为@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;

    ...
}

您想将其作为SpringBean调用还是只调用方法代码?您使用SpringBoot吗?是的,SpringBoot我将从我的测试类中像appSave.method2()一样调用。您能更新您的帖子以实际提问吗?目前还不清楚是什么问题,我不能改变原型now@Plog,你能不能提供一些其他的解决方案,用@InjecTMocks和一个bean mocked,而另一个不是..你知道你不能改变原型吗?不管怎样,更新了答案