c#单元测试断言datetime
本文关键字:datetime 断言 单元测试 | 更新日期: 2023-09-27 18:09:43
我对TimeSpan
进行了单元测试,我不知道我是否做得对。
/// <summary>
/// Wrapper around TimeSpan.TryParse that avoids out parameters.
/// Tries to parse a string as a TimeSpan and returns the parsed value as a TimeSpan or null if parsing failed.
/// </summary>
/// <param name="toParse">A string containing a value to convert</param>
/// <param name="formatProvider">An object that provides culture-specific formatting information</param>
/// <returns>The value parsed as a TimeSpan or null if parsing failed</returns>
public static TimeSpan? ParseTimeSpan(this string toParse, IFormatProvider formatProvider)
{
TimeSpan value;
if (TimeSpan.TryParse(toParse, formatProvider, out value))
{
return value;
}
return null;
}
单元测试: [TestMethod()]
public void ParseTimeSpanTest()
{
Assert.AreEqual(ParseTime("5:33 pm"), "5:33".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("9:22 AM"), "9:22 AM".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("8:22 pm"), "8:22 pm".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("7:22:44 AM"), "7:22:44 AM".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("9:22:44 pm"), "9:22:44 pm".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("13:22:14"), "13:22:14".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("23:59:00"), "23:59:00".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "25:59:00".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "23:70:00 ".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "23:59:75".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "five thirty".ParseTimeSpan(CultureInfo.InvariantCulture));
}
private static DateTime ParseTime(string time)
{
return DateTime.Parse(time, System.Globalization.CultureInfo.InvariantCulture);
}
类型DateTime和TimeSpan之间可能存在误解。DateTime是一种表示时间点的数据类型,例如1776年7月4日中午12点。TimeSpan表示经过的时间/持续时间,即比赛持续了12小时36分钟。
可以取两个DateTimes的差值来生成一个TimeSpan。试图将时间解析为时间范围是很难做到的。例如,如何将上午9:30转换为时间跨度?
如果你正在寻找如何测试TimeSpan,也许下面的内容会有所帮助。
public static TimeSpan? ParseTimeSpan(this string toParse, IFormatProvider formatProvider)
{
TimeSpan value;
if (TimeSpan.TryParse(toParse, formatProvider, out value))
{
return value;
}
return null;
}
[TestMethod()]
public void ParseTimeSpanTest()
{
Assert.AreEqual(ParseTime("5:33"), "5:33".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("9:22"), "9:22".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("8:22"), "8:22".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("7:22:44"), "7:22:44".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("9:22:44"), "9:22:44".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("13:22:14"), "13:22:14".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(ParseTime("23:59:00"), "23:59:00".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "22:59:00 AM".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "23:70:00 PM".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "23:59:75 AM".ParseTimeSpan(CultureInfo.InvariantCulture));
Assert.AreEqual(null, "five thirty PM".ParseTimeSpan(CultureInfo.InvariantCulture));
var dt = DateTime.Now;
Assert.AreEqual(dt.AddHours(1) - dt, "1:00".ParseTimeSpan(CultureInfo.InvariantCulture));
}
private static TimeSpan ParseTime(string time)
{
return TimeSpan.Parse(time, CultureInfo.InvariantCulture);
}