c# – Visual Studio单元测试Assert.AreEqual失败,具有相同的预
发布时间:2020-12-15 18:21:04 所属栏目:百科 来源:网络整理
导读:在单元测试方面,我是一个全新的,所以请原谅我,如果这完全是无知的话.但即使我为预期和实际提供完全相同的值,我也无法通过单元测试.当我设置断点并逐步执行时,我已经确认预期变量和实际变量都是包含两个项目的字符串数组,blah和blah.但每次说“Assert.AreEqua
在单元测试方面,我是一个全新的,所以请原谅我,如果这完全是无知的话.但即使我为预期和实际提供完全相同的值,我也无法通过单元测试.当我设置断点并逐步执行时,我已经确认预期变量和实际变量都是包含两个项目的字符串数组,blah和blah.但每次说“Assert.AreEqual失败时,测试仍然失败.预期:System.String []实际:System.String []”
namespace TestProject1 { public class Testing { public string[] PMDate(string lastPm) { if (string.IsNullOrEmpty(lastPm)) return new []{"blah","blah"}; string[] results = lastPm.Split(new[] {" "},StringSplitOptions.None); if (results.Length < 2) return new[] {"blah","blah"}; return results; } } [TestClass()] public class UnitTest1 { [TestMethod()] public void PmDateTest() { Testing test = new Testing(); string[] expected = test.PMDate("01/01/1900"); string[] actual = test.PMDate("01/01/1900"); Assert.AreEqual(expected,actual); } } } 解决方法
您的测试将使用object.Equals,它不会被数组覆盖.换句话说,这将打印错误:
var x = new[] { 0 }; var y = new[] { 0 }; Console.WriteLine(x.Equals(y)); 您应该使用 CollectionAssert.AreEqual(expected,actual); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Flex 3:如何在ItemRenderer中获取DataGridColumn的dataFie
- ruby – Nokogiri如何处理未封闭的HTML标签?
- ????vb 列出SQL SERVER数据库中所有表及字段信息
- ruby-on-rails – Rails访问公用文件夹中的文件夹
- c# – WPF Tabcontrol获取最大选项卡的大小
- crossdomain.xml文件作用与原理
- flex 通过BlazeDS 调用服务端方法时报 http://……/message
- c# – Monotouch应用程序中的线程数
- ruby-on-rails – 如何在Ruby on Rails中阻止特定的IP地址
- ruby-on-rails – 服务对象的验证和错误处理