我有这个类,想创建一个模拟返回并验证返回值“50”:QAService.java:

@Path("/QAService")
public class QAService {
@GET()
//@Path("/")
@Produces("text/plain")
public String getServiceInfo() {
    return "50";
}

我对定义模拟的理解是,我可以创建一个实现类的伪对象和尚未开发的模拟功能,以便测试接口(interface)。

我仍然在创建此测试以测试没有接口(interface)的模拟。如何验证?:QAServiceTest.java:
public class QAServiceTest {

    @Test
    public void getserviceTest () {

    QAService qasmock = mock(QAService.class);
    when(qasmock.getServiceInfo()).thenReturn("50");
    String expected = "50";
    assertEquals(expected, qasmock.getServiceInfo());
    }
}

最佳答案

Junit将仅运行带有@Test注释的方法,因此将其添加

@Test
public void getserviceTest () {
    QAService qasmock = mock(QAService.class);
    when(qasmock.getServiceInfo()).thenReturn("50");
    String expected = "50";
    assertEquals(expected, qasmock.getServiceInfo());
}

另外,您应该verify()模拟预期实际上发生了。
verify(qasmock, times(1)).getServiceInfo();

请注意,您似乎想测试QAService,但实际上您不在这里进行测试。您只是在测试模拟。那不是同一回事。

自己创建QAService对象并使用它。

10-08 16:19