加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#Prime因素Kata中的单元测试失败

发布时间:2020-12-16 09:56:09 所属栏目:百科 来源:网络整理
导读:长期的程序员,C#的新手.刚开始使用VS2012和内置测试框架的Prime Factor Kata.在第一次测试时,预期和实际匹配,但它被标记为失败.任何人都可以解释为什么,更重要的是解决方法是什么? using System.Collections.Generic;using Microsoft.VisualStudio.TestTool
长期的程序员,C#的新手.刚开始使用VS2012和内置测试框架的Prime Factor Kata.在第一次测试时,预期和实际匹配,但它被标记为失败.任何人都可以解释为什么,更重要的是解决方法是什么?

using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace PrimeFactorsKata
{
    [TestClass]
    public class UnitTest1
    {
        private static List<int> ExpectedList()
        {
            return new List<int>();
        }

        [TestMethod]
        public void TestOne()
        {
            Assert.AreEqual(ExpectedList(),PrimeFactorGenerator.Generate(1));
        }
    }

    class PrimeFactorGenerator
    {
        public static List<int> Generate(int n)
        {
            return new List<int>();
        }
    }
}

输出:

Assert.AreEqual failed. 
Expected:<System.Collections.Generic.List`1[System.Int32]>. 
Actual:<System.Collections.Generic.List`1[System.Int32]>. 

   at PrimeFactorsTest.UnitTest1.TestOne() in UnitTest1.cs: line 17

解决方法

正如其他人所提到的,你正在比较每个列表的引用,这些引用是不同的.要比较内容,您可以使用 CollectionAssert.AreEqual

[TestMethod]
public void TestOne()
{
    CollectionAssert.AreEqual(ExpectedList(),PrimeFactorGenerator.Generate(1));
}

您还可以查看CollectionAssert上的其他方法,如AreEquivalent

每个都有覆盖,允许您传递IComparer以确定如何比较集合中的项目.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读