与数据库交互而不在数据库中创建数据的单元测试代码

时间:2014-04-25 08:30:33

标签: c# database unit-testing

我想在Visual Studio中使用单元测试来测试我的C#代码。 代码与MySQL数据库交互。

我要测试的一个例子
用户打开我的应用程序,并通过Web服务保存在数据库中。现在我想知道在新用户来之前表Users是否还有一行。但是,如果我在webservice中测试该方法,这将在数据库中创建一条记录,那么测试数据将在数据库中。我不想在我的数据库中测试数据。

这个问题有解决方案吗?

4 个答案:

答案 0 :(得分:9)

我认为你要找的是mocking。这允许您模拟数据访问代码以测试业务逻辑。

有很多好的框架,包括moqrhino mocks

如果您想实际填充数据库以测试数据访问层,那么您正在寻找更多的集成测试。我已经写了一个完整的答案,涵盖了我对数据库集成测试的方法here

答案 1 :(得分:1)

你要找的是模拟。例如,Moq for C#。

将数据库逻辑包装在接口中并在单元测试中进行模拟。这样,您就可以与模拟的数据库逻辑进行交互,而无需真正执行它。

答案 2 :(得分:1)

模拟是一种很好的方法。

你想要更多集成测试类的方法(当你想测试实际的数据库交互时可能会有所帮助),你可以使用本地运行的MySql服务器实例。

我创建了一个项目,让您可以在实时MySql服务器上运行测试而无需进行设置。

您可以下载Nuget包(Mysql.Server)或在此处查看:https://github.com/stumpdk/MySql.Server

答案 3 :(得分:0)