繁体   English   中英

如何自动检查我没有忘记添加ef核心代码首先迁移

[英]How to check automatically that I didn't forget to add ef core code first migration

我们首先使用带有代码的 Entity Framework Core 2.2。 有时我更改了其中一个实体,但忘记创建新迁移,或者我创建迁移但仅在一个上下文中(我们有不同的数据库引擎)。 我想自动检查它(理想情况下作为 NUnit 测试),以便每次提交时它都在我们的 CI 服务器中运行。

手动我会尝试创建一个新的迁移并检查创建的 Up() 和 Down() 方法是否为空。 有什么办法可以作为 NUnit 测试吗?

创建测试的困难在哪里:

  1. 创建一个新的数据库
  2. 应用所有当前迁移以创建架构
  3. 尝试使用所有实体。 它可以像添加实体一样简单,查询该实体并深入比较它们是否相同。
  4. 删除数据库

如果架构没有新实体的迁移或实体的更改,您肯定会从中得到 SQL 错误。

当然,每次创建新实体时,都需要添加新测试。 但是,如果您使用的是 TDD,那应该已经发生了。

速度也不应该成为问题,因为创建和删除数据库不应该超过几秒钟,并且不会有很多这样的测试。 它们可以并行化。

如果您想花哨并且不想为每个实体编写测试,则可以执行以下操作:

  1. 使用反射获取 Context 支持的所有实体类型。
  2. 使用BogusAutoFixture等自动数据生成器为实体填充数据。
  3. 通过 DB 往返实体。
  4. 使用像Compare-Net-Objects这样的深度比较器将原始数据与检索到的数据进行比较。

这种自动化方法的有用性取决于您的数据 model 的复杂性。 只适用于简单的 model。 但如果 model 很复杂,则需要进行大量调整和覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM