使用efcore在“真实”数据库中进行单元测试

时间:2020-04-14 21:32:05

标签: asp.net-core asp.net-web-api

我有一个使用EFCore进行测试的相当复杂的应用程序,包括NetTopologySuite之类的东西。它在本地的MS SQL Server和云中的Azure SQL上运行,并且必须针对它们进行测试,因此在内存数据库和SQLite中还不够。有人知道一些帮助程序框架来自动创建/清除测试数据库吗?我找到了EfCore.TestSupport,但是它似乎不支持NetTopologySuite,这对我们来说是必须的。

1 个答案:

答案 0 :(得分:0)

根据定义,单元测试不能使用真实的数据库,因为您将不再测试单个功能单元。使用真实的数据库会使您的测试成为系统测试,这是更高级别的测试,应该不属于build / CI管道的一部分。这是因为真实的数据库可能会失败,即使您的代码没有任何问题(即假否定),也会使您的单元测试失败。

此外,您正在此处“测试框架”。如果要使用NetTopologySuite之类的库,则应始终确保它本身已经过良好测试,但是您不应该自己对其进行测试。那不是您的代码。 EF Core也是如此。 EF Core已经拥有广泛的测试套件,您不需要也不需要自己进行测试。您的责任是测试您编写的代码,这些代码对于您的应用程序是唯一的。此类伪造品应使用抽象的第三方库。换句话说,您只需使用从NetTopologySuite获得的伪造/模拟数据结果,然后通过代码运行该结果,而不是直接使用该库实际上

相关问题