使用人工数据设置和播种数据库以进行集成测试的正确方法是什么

bre*_*mri 11 java api integration-testing jvm kotlin

假设我在数据库中有2个表,一个叫students,另一个叫departments.students看起来如下:

department_id, student_id, class, name, age, gender, rank
Run Code Online (Sandbox Code Playgroud)

departments看起来像:

department_id, department_name, campus_id, number_of_faculty
Run Code Online (Sandbox Code Playgroud)

我有一个API可以查询数据库并从2个表中检索各种信息.例如,我有一个终点,可以通过加入2个表来获得每个校园的学生数量.

我想为我的API端点进行集成测试.为此,我启动了一个本地数据库,运行数据库模式的迁移以创建表,然后用人工记录填充每个表,以便我确切知道数据库中的内容.但是,提出一个良好的播种过程已经证明是不容易的.对于上面描述的简单示例,我当前的方法涉及为每列生成多个不同的记录.例如,我需要至少2个校区(说mainsatellite),和3个部门(比如Electrical EngineeringMathematicsmain校园Englishsatellite校园).然后我需要每个部门至少2名学生或总共6名学生.如果我在混合gender,agerank,你可以很容易地看到,人工记录的数量呈指数级增长.提出所有这些人工记录是手动的,因此很难维护.

所以我的问题是:一般来说,为集成测试设置和种子数据库的正确方法是什么?

Flo*_*elm 1

我认为DbUnit可能是适合您尝试做的事情的工具。您可以在测试之前指定数据库的状态,并在测试之后检查预期状态。