日期和格式对我来说一直是个噩梦。 最近我正在写很多文件,其中日期必须转换为各种格式的字符串(取决于客户端)。
我想创建一个可以整合这个版本的单元测试,只是举几个例子。
以下测试失败,因为“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 ??
}
答案 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);