Java Mockito.when().return()如何工作

Java Mockito.when().return()如何工作,java,testing,junit,mockito,Java,Testing,Junit,Mockito,我第一次尝试用Junit制作mockito。我有笔试的方法来测试学生的细节。下面是代码,请帮助我更好地理解,我已经创建了studentService模拟对象,并调用它来获取学生详细信息。我正在通过考试,但我不确定我是否做得对 @mock StudentService client; @Test public void testGetStudentDetails() throws Exception { Student student= new Student

我第一次尝试用Junit制作mockito。我有笔试的方法来测试学生的细节。下面是代码,请帮助我更好地理解,我已经创建了studentService模拟对象,并调用它来获取学生详细信息。我正在通过考试,但我不确定我是否做得对

@mock
StudentService client;

@Test

    public void testGetStudentDetails() throws Exception {
            Student  student= new Student()
            student.setCustomerId("123");
            student.setRId("234");
            student.setClassNumber("100");
            Mockito.when(client.getStudentDetails(new Long(123), "1234")).thenReturn(student);
            Student sd=client.getStudentDetails(new Long(123), "1234");
            assertNotNull(sd);
        }

这个测试现在没有多大意义

在您的设置中,您告诉模拟程序如何操作:

Mockito.when(client.getStudentDetails(new Long(123), "1234")).thenReturn(student);
在您的实际测试中,您调用mock,并检查它是否按照您的要求执行:

Student sd=client.getStudentDetails(new Long(123), "1234");
assertNotNull(sd);
所以你只是在测试Mockito,我想这不是你想要的

假设您想要测试
getStudentDetails
,就我们所知,您不需要Mockito,只需创建一个客户机,调用该方法并检查事情是否发生,这是应该发生的

您将只模拟要测试的对象使用的东西。(*)因为到目前为止,我们只看到您想要测试的类和使用的另一个类,但不需要模拟,因为您只是简单地创建了它,所以不需要模拟


(*)这是一个过于简单化的测试,但从一开始就可以了

这个测试现在没有多大意义

在您的设置中,您告诉模拟程序如何操作:

Mockito.when(client.getStudentDetails(new Long(123), "1234")).thenReturn(student);
在您的实际测试中,您调用mock,并检查它是否按照您的要求执行:

Student sd=client.getStudentDetails(new Long(123), "1234");
assertNotNull(sd);
所以你只是在测试Mockito,我想这不是你想要的

假设您想要测试
getStudentDetails
,就我们所知,您不需要Mockito,只需创建一个客户机,调用该方法并检查事情是否发生,这是应该发生的

您将只模拟要测试的对象使用的东西。(*)因为到目前为止,我们只看到您想要测试的类和使用的另一个类,但不需要模拟,因为您只是简单地创建了它,所以不需要模拟


(*)这是一个过于简单化的问题,但从一开始就可以了

我不太确定你在问什么;你能重写吗?Mockito.when(client.getStudentDetails(newlong(123),“1234”)。然后返回(student);Student sd=client.getStudentDetails(新长(123),“1234”);资产净值(sd);这是检查assert Null的正确方法吗?您想测试什么?在代码中测试mockito将返回给定的学生。你应该测试你自己的代码…不,这个测试是不正确的,或者至少“没有用”。你只是在测试mockito是否有效。你不需要这样做,它的开发者会这样做。而是测试您自己的代码。此特定测试的方法:不要模仿
#getStudentDetails
方法,使用真实的
客户端
实例。您用此测试了什么?只有当做了它应该做的事情时,才是Mockito。你为什么要测试它?检查是否可以使用Mockito?然后你可以这样做,但是在你检查Mockito是否与你的代码一起工作之后,你不应该保留这个测试;你能重写吗?Mockito.when(client.getStudentDetails(newlong(123),“1234”)。然后返回(student);Student sd=client.getStudentDetails(新长(123),“1234”);资产净值(sd);这是检查assert Null的正确方法吗?您想测试什么?在代码中测试mockito将返回给定的学生。你应该测试你自己的代码…不,这个测试是不正确的,或者至少“没有用”。你只是在测试mockito是否有效。你不需要这样做,它的开发者会这样做。而是测试您自己的代码。此特定测试的方法:不要模仿
#getStudentDetails
方法,使用真实的
客户端
实例。您用此测试了什么?只有当做了它应该做的事情时,才是Mockito。你为什么要测试它?检查是否可以使用Mockito?然后您可以这样做,但在检查Mockito是否与您的代码一起工作后,不应该保留该测试。