[英]How to create sqlite database in unit test and remove it after all test from class done C# .net
[英]How to unit test Database Class
这可能已被多次询问,但在这里:
我有一个充满数据库连接的类
打开连接
查询数据库
读取值
密切联系
我该如何对这些东西进行单元测试?
我需要创建一个假数据库吗? 我想我可以模拟MySql类(对于c#),但这也是很多工作。
有些陈述是“INSERT INTO”,我该怎么办呢?
首先。 拆分数据层。 查看存储库模式 。 每个实体(表或视图)都应该拥有自己的类获取数据。
使用数据接口而不是特定的驱动程序实现: IDbConnection
而不是SqlConnection
。 使用DbProviderFactory
来获得正确的连接实现。 然后使用connection.CreateCommand()
来获取命令等。
尽一切努力使测试数据层变得更加容易。 请记住,数据库不应该有任何逻辑。 它的唯一目的是从数据源加载数据。
但是如果你不想改变东西:对数据库工作是最简单的方法。 删除所有数据并在每次测试之前插入新的测试数据(以删除上一次测试期间的任何更改)。
最简单的方法是创建一个新的测试数据库并制作一些插入查询,然后将结果集存储在列表或其他内容中,然后使用调试器运行它,看它是否将结果集存储在您创建的列表中。
不要在源代码中插入任何intsert,使用sql管理工作室并在那里插入,直到你知道连接和一切正常。 现在就删除所有这些值。
您可以使用在您的计算机上本地运行的实时MySql数据库。
我为此目的制作了一个Nuget包,你可以添加到你的项目中: https : //github.com/stumpdk/MySql.Server
每次运行测试时它都会启动一个本地MySql服务器。 它很快,提供了团队可以共享的解决方案,而且您不必花时间安装服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.