C# TDD:带有列表的函数返回良好的值,但它';它不工作了
我最近开始了C#项目,我要做一个名为“光线跟踪器挑战”的项目。 为此,我们需要首先进行一些测试驱动的开发,然后是编码时间。 我遇到的问题是: 需要检查的结果返回的是而不是(),因此即使值是ok,测试也无法通过 这是我的TDD代码:C# TDD:带有列表的函数返回良好的值,但它';它不工作了,c#,list,tdd,C#,List,Tdd,我最近开始了C#项目,我要做一个名为“光线跟踪器挑战”的项目。 为此,我们需要首先进行一些测试驱动的开发,然后是编码时间。 我遇到的问题是: 需要检查的结果返回的是而不是(),因此即使值是ok,测试也无法通过 这是我的TDD代码: [测试] 加入公众作废 { var a=new List(){3.5,-2.0,5.0,1.0};//点 var b=new List(){-2.0,3.0,1.0,0.0};//点 Assert.AreEqual((a[0]+b[0],a[1]+b[1],a[2]+
[测试]
加入公众作废
{
var a=new List(){3.5,-2.0,5.0,1.0};//点
var b=new List(){-2.0,3.0,1.0,0.0};//点
Assert.AreEqual((a[0]+b[0],a[1]+b[1],a[2]+b[2],a[3]+b[3]),Addition.Add(string.Empty));
}
这是我的返回函数:
内部静态列表添加(字符串编号)
{
返回新列表{1.5,1.0,6.0,1.0};
}
结果是
Adding
Source: UnitTest1.cs line 11
Duration: 158 ms
Message:
Expected: (1.5d, 1.0d, 6.0d, 1.0d)
But was: < 1.5d, 1.0d, 6.0d, 1.0d >
Stack Trace:
Tests.Adding() line 17
有人能给我解释一下吗?
PS:我知道测试一个加法并不值得,我主要是在基本的东西上进行训练。你的断言比较如下:
(a[0]+…+b[3])
这是一个元组,这是一个:新列表(){3.5,…1.0}
这是一个列表
由于它们是不同的集合类型,因此比较无法按预期进行
使用列表
作为断言期望值:
Assert.AreEqual(new List<double> { a[0] + ... + b[3]}, Addition.Add(string.Empty));
您的断言比较了以下内容:
(a[0]+…+b[3])
这是一个元组,而这:newlist(){3.5,…1.0}
这是一个列表
由于它们是不同的集合类型,因此比较无法按预期进行
使用列表
作为断言期望值:
Assert.AreEqual(new List<double> { a[0] + ... + b[3]}, Addition.Add(string.Empty));
我猜您的问题与浮点比较舍入错误有关:您期望的表达式是元组,而结果是列表。你不能直接比较它们。您还需要一个列表,或者在Addion.Add()中返回一个元组,或者单独比较每个元素。我猜您的问题与浮点比较舍入错误有关:您需要的表达式是元组,而结果是列表。你不能直接比较它们。您还需要一个列表,或者在Addion.Add()中返回一个元组,或者单独比较每个元素。非常感谢,问题解决了!非常感谢,问题解决了!