MSTest单元测试能否在DataSource属性中调用存储过程(C#)
在MSTest的DataSource属性中调用存储过程的方法
当然可以,MSTest的DataSource属性支持直接指定执行存储过程的SQL语句,而非仅引用表,具体实现方式如下:
直接执行无参存储过程
在DataSource的第三个参数位置,直接写入执行存储过程的语句即可,示例代码:[TestClass] public class SampleTests { public TestContext TestContext { get; set; } [DataSource( providerName: "System.Data.SqlClient", connectionString: "Server=YourServerName;Database=YourDB;Trusted_Connection=True;", tableName: "EXEC dbo.YourStoredProcedureName", dataAccessMethod: DataAccessMethod.Sequential)] [TestMethod] public void TestWithStoredProcedure() { // 从存储过程返回的结果集中获取数据 var testData = TestContext.DataRow["TargetColumnName"].ToString(); // 编写你的测试逻辑 } }执行带参数的存储过程
如果存储过程需要传入参数,直接在EXEC语句中添加参数即可,示例:[DataSource( "System.Data.SqlClient", "Server=YourServerName;Database=YourDB;Trusted_Connection=True;", "EXEC dbo.YourSPWithParams @Param1='SampleValue', @Param2=456", DataAccessMethod.Sequential)] [TestMethod] public void TestWithParametrizedSP() { // 测试逻辑 }关键注意事项
- 确保数据库连接账号拥有该存储过程的执行权限
- 存储过程必须返回单个结果集,MSTest仅会使用第一个结果集作为测试数据源
- 如果存储过程有输出参数,这类参数不会被MSTest捕获,仅返回SELECT语句生成的结果集
内容的提问来源于stack exchange,提问作者user1979457
相关产品推荐
相关产品推荐

