ฉันประสบปัญหาในการเรียงลำดับเมื่อเขียนการทดสอบ BDD ด้วย API ของเรา (Spring+Hibernate) เราใช้ JBehave เป็น BDD runner และ HSQL db
โดยพื้นฐานแล้ว ฉันได้สร้างกรณีต่อไปนี้เพื่ออธิบายปัญหาที่ฉันพบ
ฉันมีสองเรื่อง ทั้งสองเรื่องแทรกลงในตารางที่เรียกว่า DUMMYPRODUCT เราระบุว่าก่อนแต่ละสถานการณ์ เราจะล้างข้อมูลทั้งหมดและรีเซ็ตสคีมาโดยใช้สิ่งต่อไปนี้
"ตัดข้อมูลประจำตัวสาธารณะของ SCHEMA ให้สั้นลงและไม่ต้องตรวจสอบ"
จากนั้นเราจะเริ่มต้นข้อมูลตารางใหม่โดยใช้สคริปต์ sql ที่กำหนดไว้ล่วงหน้าซึ่งรวมถึงส่วนแทรก 2 รายการใน DUMMYPRODUCT
และรีเซ็ตลำดับ (สมมุติ) โดยใช้
วางลำดับ DUMMYPRODUCT_SEQ; สร้างลำดับ DUMMYPRODUCT_SEQ เริ่มต้นด้วย 3 เพิ่มขึ้น 10;
แต่ฉันกำลังเผชิญกับพฤติกรรมที่แปลกประหลาดอย่างยิ่ง เนื่องจากลำดับเหตุการณ์ไม่ได้ถูกรีเซ็ตระหว่างทั้งเรื่องราวและสถานการณ์ แต่ดูเหมือนว่าพวกเขาจะดำเนินต่อไปในเรื่องราว/สถานการณ์ถัดไป จากนั้นจึงรีเซ็ตภายใน กล่าวคือ ไม่เข้าไปในบล็อกลำดับถัดไป ทำให้เกิดการละเมิดข้อจำกัดเกิดขึ้น
ข้อยกเว้น=java.sql.SQLIntegrityConstraintViolationException: การละเมิดข้อจำกัดด้านความสมบูรณ์: ข้อจำกัดเฉพาะหรือการละเมิดดัชนี; SYS_PK_10216 ตาราง: DUMMYPRODUCT
การแทรกพฤติกรรมที่มีประสบการณ์ใน DUMMYPRODUCT สำหรับ DUMMYPRODUCTID
(DUMMYPRODUCTID)
เรื่องแรก
สถานการณ์
3
4
เรื่องถัดไป
สถานการณ์
5
6< br/> 7
8
9
10
11
12
3
4
5 ข้อยกเว้น
7 ข้อยกเว้น
9 ข้อยกเว้น
สถานการณ์จำลอง
11
12
3
4
5
6
7
8
9
10
11 ข้อยกเว้น
13
14
15
16
17
18
19
20
21
22
23
24
25
26
สถานการณ์
27
28
29
30
31
32
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 ข้อยกเว้น< br/> 29 ข้อยกเว้น
คุณเคยประสบปัญหาดังกล่าวกับการใช้งาน HSQL ของคุณในอดีตหรือไม่