我有一个测试,检查我使用H2进行测试的最后一次插入的id
@Entity
@Data
public class Guy implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
protected Long id;
@Column(nullable = false)
protected String name;
}
这是测试
@Test
public void getTest() {
String jsonResponse = "{\"name\":\"andrew\"}";
Response response = given().body(jsonResponse).header("Content-Type",
"application/json").header("Client", 123).post("/thin/guy");
assertEquals(HttpServletResponse.SC_CREATED,response.getStatusCode());
//here the record was created
JSONObject jsonObject = new JSONObject(response.getBody().print());
Response resGet = given().header("Client",123).get("/thin/guy/"+String.valueOf(jsonObject.get("id")));
assertEquals(HttpServletResponse.SC_OK, resGet.getStatusCode());
//this is the response "{\"id\":1,\"name\":\"andrew\"}"
JSONObject getGuy = new JSONObject(resGet.getBody().print());
assertEquals(5000L,Long.valueOf(getGuy.get("id").toString()));
}
如何使H2database(仅在测试范围内运行)返回带有de值的插入的id,例如5000.可以在测试范围中设置实体Guy的星值?谢谢!
不要检查新创建的对象的ID的实际值。
如果你真的想测试一些东西,那么测试新创建的对象的属性(如XtremeBaumer建议的那样)。或者,您可以测试创建期间返回的对象是否与GET请求期间返回的对象完全相同。
assertEquals(jsonObject, testGuy);