我有一个测试,用于检查我正在使用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设置星级值?谢谢!
答案 0 :(得分:0)
请勿检查新创建对象的ID的实际值。
如果您确实要测试某些东西,请测试新创建的对象的属性(建议XtremeBaumer)。 或者,您可以测试创建期间返回的对象是否与GET请求期间返回的对象完全相同。
assertEquals(jsonObject, testGuy);