【发布时间】:2020-03-06 08:55:24
【问题描述】:
我正在为我的公司制定一些概念。目标是使我们的集成测试更快。 特别是使用和/或操作数据库的集成测试。我将测试分为 2 个类别和目录:
- 单元测试
- Integration-Tests(这里是所有与数据库联系的测试类)
我们使用 Postgresql 9.3 版、Liquibase、Visualstudio 和 MSTest。
我们的测试执行是在这个步骤中的:
- 运行测试(正在使用的项目)
- 创建数据库
- 如果类中有一些需要数据库的方法,则填写数据库
问题:
在每个方法运行之前,我们都会使用 TestInitiliaze 填充数据库,如下所示:
[TestInitiliaze] public void TestInit(){ Databaseclass.FillDatabase(); }我们有 450 个测试正在使用数据库。近 50 个测试操作数据库。
其他使用数据库的测试,无需操作即可读取测试数据。
测试是混合的。这意味着我们在一个类中进行了操作数据的测试和一些只读取数据的测试。
目标: 使这个测试更快。我有一个在我们的项目中不起作用的概念。使用数据库快照。 我的想法:
- 运行测试
- 创建数据库
- 填充数据库
- 数据库快照
-
[TestInitiliaze] public void testinitiliaze(){ DatabaseClass.revertToSnapshot() }- 或类初始化:
DatabaseClass.revertToSnapshot()
- 或类初始化:
我尝试再提出一个概念。但它也不适用于我们的 Postgresql 版本。 嵌套事务。
还有其他可行的替代方案吗?
最好的问候 哈格姆
【问题讨论】:
标签: c# performance testing integration-testing postgresql-9.3