首页 / C# / 具有“复杂”参数的函数的C#单元测试结构
具有“复杂”参数的函数的C#单元测试结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了具有“复杂”参数的函数的C#单元测试结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1581字,纯文字阅读大概需要3分钟。
内容图文
![具有“复杂”参数的函数的C#单元测试结构](/upload/InfoBanner/zyjiaocheng/780/8b0c88a29c19495c84cebb2a01c7c1e7.jpg)
我正在使用C#并试图找出要使用哪个单元测试框架(MSTest,Nunit,Xunit)以便最好地采用数据驱动的测试方法.我有一些单元测试的经验,但只有非常简单的功能.我想要应用单元测试的功能定义如下,以及我尝试的解决方案,以及所需解决方案的形式.
单元测试功能
Point3D GetIntersectionPoint(List<Point3D> line1, List<Point3D> line2)
从两条任意长度和线段返回一个3D点(x,y,z)(假设它们在一个点上相交).可以说你需要测试的只是更简单的功能:
Point3D GetIntersectionPointSimple(LineSegment segment1, LineSegment segment2)
其中“LineSegment”是单个直线段.但是我想用多个交叉点捕获案例,并且对解决方案感兴趣,因为它相当普遍.
试图解决方案
在MSTest中,很容易从数据源中获取一行数据,因此我在CSV文件中有以下内容:
LineA LineB IntersectionPoint
0,0;1,0;2,0 1.5,1;1.5,0;1.5,-1 0,1.5
单个点由’;’分隔的位置并且(x,y)坐标由’,’分隔.为简洁起见,此示例在2D中.
有了这个,你可以读入每个字符串,如:
TestContext.DataRow["LineA"].ToString()
然后解析它以获得所需的点列表.然后可以检查这样:
Assert.AreEqual(parsedIntersectionPoint, GetIntersectionPoint(parsedLine1, parsedLine2))
然而,这似乎很混乱.
期望的解决方案
理想情况下,此问题的解决方案将满足以下条件:
>简单地添加数据(例如,序列化对象,易于手动输入,如CSV方法)
>直观(在CSV文件中存储点列表的意义上)
>最好坚持使用简单的数据源,如CSV,XML或JSON.
真的,我只是在寻找“正确”的方法来解决这个问题,因为我所采取的方向似乎是“错误的”.
任何帮助,将不胜感激!!
解决方法:
这是正确的方法,显然对于3D数据集而言不方便,但序列化对象并不简单.
编写3个嵌套循环可能更容易,边界测试函数并将这些结果打印到csv.然后使用3个嵌套循环(x,y,z)对函数进行单元测试,检查在函数中更改的任何内容都不会更改预期的输出.
内容总结
以上是互联网集市为您收集整理的具有“复杂”参数的函数的C#单元测试结构全部内容,希望文章能够帮你解决具有“复杂”参数的函数的C#单元测试结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。