我想在Visual Studio中使用单元测试来测试我的C#代码。 代码与MySQL数据库交互。
我要测试的一个例子
用户打开我的应用程序,并通过Web服务保存在数据库中。现在我想知道在新用户来之前表Users
是否还有一行。但是,如果我在webservice中测试该方法,这将在数据库中创建一条记录,那么测试数据将在数据库中。我不想在我的数据库中测试数据。
这个问题有解决方案吗?
答案 0 :(得分:9)
我认为你要找的是mocking。这允许您模拟数据访问代码以测试业务逻辑。
有很多好的框架,包括moq和rhino mocks。
如果您想实际填充数据库以测试数据访问层,那么您正在寻找更多的集成测试。我已经写了一个完整的答案,涵盖了我对数据库集成测试的方法here。
答案 1 :(得分:1)
你要找的是模拟。例如,Moq for C#。
将数据库逻辑包装在接口中并在单元测试中进行模拟。这样,您就可以与模拟的数据库逻辑进行交互,而无需真正执行它。
答案 2 :(得分:1)
模拟是一种很好的方法。
你想要更多集成测试类的方法(当你想测试实际的数据库交互时可能会有所帮助),你可以使用本地运行的MySql服务器实例。
我创建了一个项目,让您可以在实时MySql服务器上运行测试而无需进行设置。
您可以下载Nuget包(Mysql.Server)或在此处查看:https://github.com/stumpdk/MySql.Server
答案 3 :(得分:0)