使用MSTest测试多种数据库类型

本文关键字:数据库 类型 MSTest 测试 使用 | 更新日期: 2023-09-27 18:01:09

我目前正在开发一个应用程序,该应用程序连接到多个数据库引擎(目前有2个,但将来还会增长(,但在每个数据库上都做类似的事情。我想开发一组单元测试,我只需要写一次,但可以在不同的数据库引擎上运行。这个应用程序将非常复杂,我预计我将为它编写数百甚至数千个测试

例如,我有一个检索数据库服务器中所有可用数据库的方法,并且我有两个类,它们具有定义GetDatabases((方法的相同接口。我想开发一个方法,创建一个实现IDatabaseEngine的类的实例,并对其调用GetDatabases((方法

然后,我想用MySQLDatabaseEngine类调用这个方法一次,用SqlServerDatabaseEngine类再次调用这个方法并测试输出。

我目前正在使用MSTest,因为这是我最熟悉的,但如果测试引擎被证明不适合此任务,我并不反对切换它。由于我今天早上才开始,到目前为止我只写了三个测试,所以切换根本不是问题。

甚至可能没有必要对MSTest的配置做一些不同的事情,而是在MSTest内部开发某种测试工具,用不同的参数运行两次方法。然而,我想避免任何我必须的情况

我已经考虑过代码生成,但我真的希望避免这种情况。

使用MSTest测试多种数据库类型

您还可以拥有接受接口实现作为参数的私有测试方法,并使用一个或另一个类(mySql或SQL Server(调用它们两次,这样您就有一个或两个调用方(最好是两个(,但测试本身只写一次。

或者,你可以成功地使用依赖注入来获得你需要的东西,我在DI方面没有太多经验,但据我所知,模拟和简化这些使用模式以及大量其他优势是很好的。

搜索NInjector Unity。