【发布时间】:2019-02-21 15:59:28
【问题描述】:
我有一个测试检查我使用 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 返回插入的 id,其 de 值例如 5000。 是否可以在测试范围内为实体 Guy 设置星值?谢谢!
【问题讨论】:
-
您可以将
identity种子设置为特定值。但我建议不要检查身份证。您应该检查除 ID 之外的所有其他值 -
我在哪里可以设置de identity?在 pom 文件中?我知道.. ID.. 这是一种非常罕见的情况,但也有这种情况
-
它是一个数据库操作。对于 MSSQL,它的
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);