C#带“的函数的单元测试结构”;复杂的;参数
我在C#工作,试图找出使用哪个单元测试框架(MSTest、Nunit、Xunit)来最好地接近数据驱动的测试方法。我在单元测试方面有一些经验,但只涉及非常简单的函数。下面定义了我想要应用单元测试的函数,以及我尝试的解决方案和所需解决方案的形式 功能到单元测试C#带“的函数的单元测试结构”;复杂的;参数,c#,nunit,mstest,xunit,C#,Nunit,Mstest,Xunit,我在C#工作,试图找出使用哪个单元测试框架(MSTest、Nunit、Xunit)来最好地接近数据驱动的测试方法。我在单元测试方面有一些经验,但只涉及非常简单的函数。下面定义了我想要应用单元测试的函数,以及我尝试的解决方案和所需解决方案的形式 功能到单元测试 Point3D GetIntersectionPoint(List<Point3D> line1, List<Point3D> line2) 其中,“直线段”是一条直线段。然而,我想用多个交叉口来解决这个问题,我对
Point3D GetIntersectionPoint(List<Point3D> line1, List<Point3D> line2)
其中,“直线段”是一条直线段。然而,我想用多个交叉口来解决这个问题,我对这个解决方案很感兴趣,因为它相当普遍
尝试的解决方案
在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))
然而,这似乎相当混乱
所需解决方案
理想情况下,该问题的解决方案应满足以下要求:
任何帮助都将不胜感激 这是正确的方法,显然对于3D数据集来说很不方便,但是序列化对象不会更简单 编写3个嵌套循环来对函数进行边界测试并将结果打印到csv可能更容易。然后使用3个嵌套循环(x、y、z)对函数进行单元测试,检查函数中的任何更改都不会更改预期输出
Assert.AreEqual(parsedIntersectionPoint, GetIntersectionPoint(parsedLine1, parsedLine2))