c# - 如何为 SQL 查询编写自动化测试?

标签 c# sql unit-testing testing regression-testing

我们目前在工作中采用的系统是编写一些非常复杂的查询,这些查询执行多次计算并具有多个连接/子查询。我认为我没有足够的经验来判断这是否正确,所以我同意并尝试使用这个系统,因为它有明显的好处。

我们目前遇到的问题是编写查询的人犯了很多错误并假设一切都是正确的。我们现在已经指派了一名测试人员来分析所有查询,但这仍然非常耗时且压力很大。

我想知道我们如何创建一个自动化过程(如果可能,不用专门用代码编写它,因为我可以从长远来看如何做到这一点)来验证一组 10 多个不同的输入,验证输出数据并说明计算是否正确。

我知道我可以使用数据库中的特定数据编写脚本并使用 C# 创建脚本(数据库是 SQL Server)并验证所有输出的值,但我想知道官方的“标准”是什么我在这方面缺乏经验,我想改进。

如果需要,我很乐意添加更多信息,如有必要,请添加评论。谢谢。

编辑:我正在使用 C#

最佳答案

测试运行 SQL 查询的代码的标准方法是对其进行单元测试。 (有比单元测试更高级别的测试,但听起来您的问题出在应用程序的一小部分特定部分,所以不要担心更高级别的测试。)不要尝试测试查询直接,但测试查询的结果。也就是说,为运行查询的每个 C# 方法编写单元测试。每个单元测试都应该将已知数据插入数据库,调用方法,并断言它返回预期的结果。

C# 中两种最常见的单元测试方法是使用 the Visual Studio unit test toolsNUnit .如何编写单元测试是一个很大的话题。 Roy Osherove's "Art of Unit Testing"应该是开始的好地方。

关于c# - 如何为 SQL 查询编写自动化测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525620/

相关文章:

c# - 为什么 XmlSerializer 无法识别此属性?

c# - ASP.NET Core MVC 标记帮助器参数中的字符串文字

c# - 'decimal' 类型和格式的 html 助手?

c# - 在抽象通用测试类中定义单元测试

python 模块变量作为 function_default 不可变

java - 我应该如何对 WebServiceTemplate (SpringWS) 进行单元测试

c# - 伪代码的正则表达式 - 修剪间距

sql - 前几行数组的累积数组?

sql - 删除行以及引用行 ID 的行

java - NHibernate 是否与 Hibernate 互操作?如果没有,是否有适用于 Java 和 .NET 的框架?