使用string.Format和UnitTest日期

时间:2011-10-08 09:27:10

标签: c# unit-testing

日期和格式对我来说一直是个噩梦。 最近我正在写很多文件,其中日期必须转换为各种格式的字符串(取决于客户端)。

我想创建一个可以整合这个版本的单元测试,只是举几个例子。

以下测试失败,因为“March 09”和“March March”不匹配。我如何让这个测试文化意识到。 更好地测试任何人?

        [TestCase("March 09", "{0:m}")]                        
        [TestCase("March, 2008", "{0:y}")]  
             [TestCase("3/9/2008 4:05 PM", "{0:g}")                       
        public void When_stringFormat_a_date_should_match(string expected,string format)
        {
            DateTime dt = new DateTime(2008, 03, 09, 16, 05, 07);

            string actual = String.Format(format, dt);

           assert ??                
        }

2 个答案:

答案 0 :(得分:2)

您正在呼叫String.ToString()!指定CultureInfo(甚至使用此函数)没有意义,因为这总是返回原始字符串,与指定的文化无关。

IMO在转换日期时必须指定CultureInfo,即

string actual = String.Format(CultureInfo.InvariantCulture, format, dt);
Assert.AreEqual(expected, actual);

答案 1 :(得分:1)

Assert.AreEqual(expected, actual);