[英]TDD: Function with a list return good values but it's not working
我最近开始了 C#,我必须做一个名为 Ray Tracer Challenge 的项目。 为此,我们需要先做一些测试驱动的开发,然后是编码时间。 我遇到的问题是:需要检查的结果是用 <> 而不是 () 返回的,所以即使值没问题,测试也不能通过。
这是我的 TDD 代码:
[Test]
public void Adding()
{
var a = new List<double>() { 3.5, -2.0, 5.0, 1.0 }; // point
var b = new List<double>() { -2.0, 3.0, 1.0, 0.0 }; // point
Assert.AreEqual((a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]), Addition.Add(string.Empty));
}
这是我的回报 function:
internal static List<double> Add(string numbers)
{
return new List<double> { 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
我无法改变
Assert.AreEqual((a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]), Addition.Add(string.Empty));
有人可以解释一下吗? PS:我知道测试加法并不值得,我主要是在基础知识上进行培训。
你的断言比较这个: (a[0] +... + b[3])
这是一个元组,这个: new List<double>() { 3.5,... 1.0 }
这是一个列表。
由于它们是不同的集合类型,因此比较无法按预期进行。
使用List
作为您的断言预期值:
Assert.AreEqual(new List<double> { a[0] + ... + b[3]}, Addition.Add(string.Empty));
或更改您的返回 function 以返回Tuple
,如下所示:
{
return (1.5, 1.0, 6.0, 1.0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.