【发布时间】:2012-05-27 15:48:57
【问题描述】:
我是 Java 单元测试的新手,听说 Mockito 框架非常适合用于测试目的。
我已经开发了一个 REST 服务器(CRUD 方法),现在我想测试它,但我不知道怎么做?
我更不知道这个测试程序应该如何开始。我的服务器应该在 localhost 上运行,然后在该 url 上进行调用(例如 localhost:8888)?
这是我目前尝试的方法,但我很确定这不是正确的方法。
@Test
public void testInitialize() {
RESTfulGeneric rest = mock(RESTfulGeneric.class);
ResponseBuilder builder = Response.status(Response.Status.OK);
builder = Response.status(Response.Status.OK).entity(
"Your schema was succesfully created!");
when(rest.initialize(DatabaseSchema)).thenReturn(builder.build());
String result = rest.initialize(DatabaseSchema).getEntity().toString();
System.out.println("Here: " + result);
assertEquals("Your schema was succesfully created!", result);
}
这是initialize 方法的代码。
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/initialize")
public Response initialize(String DatabaseSchema) {
/** Set the LogLevel to Info, severe, warning and info will be written */
LOGGER.setLevel(Level.INFO);
ResponseBuilder builder = Response.status(Response.Status.OK);
LOGGER.info("POST/initialize - Initialize the " + user.getUserEmail()
+ " namespace with a database schema.");
/** Get a handle on the datastore itself */
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
datastore.put(dbSchema);
builder = Response.status(Response.Status.OK).entity(
"Your schema was succesfully created!");
/** Send response */
return builder.build();
}
在这个测试用例中,我想向服务器发送一个 Json 字符串(POST)。如果一切顺利,服务器应回复“您的架构已成功创建!”。
有人可以帮帮我吗?
【问题讨论】:
-
在上面的代码中,你在哪里向服务器发送了一个 JSON 字符串?为什么你甚至需要 Mockito 来进行这样的测试?
-
我不知道我是否需要 Mockito 来进行这些测试,因为我说过我正在尝试了解如何测试 REST 服务。当我调用这个方法时,JSON 文件正在发送:
rest.initialize(DatabaseSchema),DatabaseSchema是一个 JSON 文件。 -
不,它没有。
rest是一个模拟。它是一个回答你告诉它回答什么的对象。这不是你的休息服务器。您正在测试 Mockito 而不是测试您的服务器。您不需要 Mockito 进行此类测试。 -
谢谢!你能指导我吗,我该怎么做?我想测试我的 CRUD 方法。我想要单元测试,以测试我服务器上的每个休息方法。
-
要么进行集成测试并将 JSON 实际发送到服务器并分析得到的答案以确保它们是合适的,要么进行单元测试以测试在服务器端使用的类的方法。 Mockito 对后者很有用。但是如果没有看到你的代码,就不可能告诉你如何测试它,除了指向你的 Mockito 的文档。
标签: java unit-testing rest mockito