如何在java中模拟函数调用

如何在java中模拟函数调用,java,spring-boot,unit-testing,junit,mockito,Java,Spring Boot,Unit Testing,Junit,Mockito,我不熟悉单元测试,并试图找出不同的测试实现。我试图弄清楚如何模拟一个特定的函数调用。我遇到了模拟间谍,但不太明白它是如何被使用的。有人能告诉我在这种情况下是如何嘲笑的吗 Class ABC { void display(String name, int id){ validateName(name); validateId(id); } } Class TestIt{ @Test void testValidation

我不熟悉单元测试,并试图找出不同的测试实现。我试图弄清楚如何模拟一个特定的函数调用。我遇到了模拟间谍,但不太明白它是如何被使用的。有人能告诉我在这种情况下是如何嘲笑的吗

Class ABC {
   
    void display(String name, int id){
       validateName(name);
       validateId(id);
     }
}


Class TestIt{
   
   @Test
   void testValidation(){

     //how to mock validateName function call and test only validateId ?
     ABC obj=new ABC();
     obj.display("abc",2);
   }
}

一些模拟框架允许部分模拟(大多数模拟类实际上都是真实的,只是一些方法被模拟)。如果您的示例接近真实代码,我不会分别测试这两种方法。如果这些方法中有一种做了测试中不需要的事情,比如访问外部服务(DB、webservice、filesystem),我会将该功能封装到adapater类中,并将其注入到
ABC
。然后您可以模拟适配器。

可能会有帮助吗?为什么您(部分)要删除您正试图测试的方法?