Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单元测试调用存储过程并返回结果的方法_C#_Unit Testing - Fatal编程技术网

C# 单元测试调用存储过程并返回结果的方法

C# 单元测试调用存储过程并返回结果的方法,c#,unit-testing,C#,Unit Testing,我有一个关于单元测试的问题。我有一个方法可以接受两个日期时间参数:开始时间和结束时间。该方法调用数据库并返回两个日期时间之间的一组记录。我被告知要对这个逻辑进行单元测试,但我不确定如何进行。我的第一次尝试是直接调用数据库并对有问题的表进行qry。然后调用该方法。最后,我将比较这两个结果,看看它们是否相同。 对我来说,测试这个方法没有意义,因为所有的逻辑都在数据库中。我可以moq一些基本的对象,但是接下来我要测试的就是我的假数据是否被返回。i、 e.传入x,返回y,将传递非null的结果。我可能在

我有一个关于单元测试的问题。我有一个方法可以接受两个日期时间参数:开始时间和结束时间。该方法调用数据库并返回两个日期时间之间的一组记录。我被告知要对这个逻辑进行单元测试,但我不确定如何进行。我的第一次尝试是直接调用数据库并对有问题的表进行qry。然后调用该方法。最后,我将比较这两个结果,看看它们是否相同。

对我来说,测试这个方法没有意义,因为所有的逻辑都在数据库中。我可以moq一些基本的对象,但是接下来我要测试的就是我的假数据是否被返回。i、 e.传入x,返回y,将传递非null的结果。我可能在这里走错了方向,所以我需要一些建议。

如果您的数据库中有需要进行单元测试的逻辑,那么不幸的是,您实际上只有三个选项:

  • 将逻辑提取到服务和单元测试中(这可能导致大量返工)
  • 在事务内部调用单元测试中的过程并回滚(这有一个缺点,即依赖于现有数据库并减慢单元测试)
  • SQL Server有一个工具可供使用,因此您可以单独对代码进行单元测试

  • 我以前讨论过这个问题,因此您可能会发现这很有用。

    如果没有一点代码,很难提供帮助。请发布调用存储过程的方法的代码。“我被告知要对这个逻辑进行单元测试”-你为什么不让告诉你的人澄清他们想要什么?——#1--不幸的是,这是被调用以返回数据的WCF服务,因此在这种情况下它不会工作,但通常我同意这一点--#2--这是我目前正在做的事情,但是因为不良的实践而被要求这样做--#3--我们有一个数据库团队,它不允许我们接触数据库,只允许我们使用它。我真的不明白你的意思-一个WCF服务可以像其他服务一样包含逻辑,所以有一个前端网站调用这个服务。我正在更新现有WCF服务中的逻辑。通过服务层从网站调用所有数据。服务层直接命中数据库,然后在服务和数据库之间需要一个简单的抽象层。我还质疑单元测试DB是“糟糕的做法”。这并不理想,但总比根本没有测试要好——这就是为什么我要求OP至少发布一些代码。没有什么可看的,我们在这里猜测。