我有一个测试检查我使用 H2 进行测试的最后插入的 id@Entity@Datapublic class Guy implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(nullable = false) protected Long id; @Column(nullable = false) protected String name;}这是测试@Testpublic 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 设置星值?谢谢!
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
不要检查新创建对象的 ID 的实际值。
没有理由检查 id。id 由数据库引擎生成,但您在测试期间使用不同的引擎,因此您的测试用例将测试您的测试环境的行为......
测试可以以随机顺序运行,因此当您添加更多测试或更改测试数据时,您的旧测试将开始失败。
如果你真的想测试一些东西,那么测试新创建的对象的属性(正如XtremeBaumer建议的那样)。或者你可以测试创建时返回的对象是否与GET请求时返回的对象完全相同。
assertEquals(jsonObject, testGuy);
添加回答
举报
0/150
提交
取消