其他分享
首页 > 其他分享> > 单元测试返回集合的方法

单元测试返回集合的方法

作者:互联网

我正在尝试为服务返回一些复杂对象(IQueriable< MyObject>给出一个想法)的服务编写一些单元测试,但不确定如何解决该问题.

考虑一下:

公共IQueriable< MyObject> GetMyObjects(int someParameterA,int someParameterB)
{…}

基本上,根据所传递的参数,该方法将输出相当复杂的对象的集合.

由于该应用程序正在开发中,因此我可以使用本地SQL实例,并且已经创建了一种方法,该方法将使用一些示例数据填充此数据库,因此该服务需要一些帮助.

我在编写单元测试方面经验不足.好的,老实说,我在编写单元测试方面没有任何经验.我看到的大多数示例都是用于进行一些计算并返回单个结果的方法的.因此,可以为带有测试用例的测试附加数据源.如果要返回两个数字之和的方法,则数据源将由三列组成:两个数字和预期结果.

因此,由于我对单元测试的了解有限,所以我试图应用相同的逻辑来测试返回集合的方法…而我不知道测试应该包含什么(我知道我可以轻松地测试返回的元素的数量),更不用说带有测试用例的测试数据源的外观了.

我知道VS2010具有CollectionAssert,但是我想我的问题是在这种情况下我不知道如何创建“期望”值.

进行此类方法的单元测试的最佳方法是什么?

解决方法:

为数据源创建一个模拟集合.一个成熟的对象,或者如果它们在测试中创建起来很复杂,则可以考虑使用模拟框架,例如MoqRhino Mocks.

只要您的数据源包含足够多的对象来涵盖肯定,否定和异常情况,您就可以针对该数据源编写一套测试,以涵盖GetMyObjects中可能来自不同输入状态的所有预期结果.

您希望这些数据保持在应用程序运行时的状态,因此即使您没有正常拥有的所有数据,您也必须有足够的空间来覆盖要测试的事件反对,例如:

>源中没有数据时会发生什么.

>我们会收到一个空集合,还是一个例外?

>源中有数据但与您传入的参数不匹配时会发生什么
>当源中有数据但只有一个参数匹配时会发生什么
>源中有数据并且您传递应返回数据的参数时会发生什么
>将错误数据传递给方法时会发生什么?
>等….

标签:unit-testing,visual-studio-2010,c
来源: https://codeday.me/bug/20191127/2075070.html