繁体   English   中英

TDD:带有列表的 Function 返回良好的值,但它不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM