Unit testing 计算剩余时间和经过的时间
我正在写一个方法来帮助我计算任务的时间。 每个任务必须在创建后的小时内完成 期望的行为: 我需要显示完成任务所剩的人数。 正数还有时间 负数表示任务超出指定的时间 这是计算时差的正确实现吗? 到目前为止,我的进展是这样的,我已经创建了两个测试:Unit testing 计算剩余时间和经过的时间,unit-testing,c#-4.0,Unit Testing,C# 4.0,我正在写一个方法来帮助我计算任务的时间。 每个任务必须在创建后的小时内完成 期望的行为: 我需要显示完成任务所剩的人数。 正数还有时间 负数表示任务超出指定的时间 这是计算时差的正确实现吗? 到目前为止,我的进展是这样的,我已经创建了两个测试: /// <summary> /// Displays number of hours left for resolution as positive and negative number for missed targets.
/// <summary>
/// Displays number of hours left for resolution as positive and negative number for missed targets.
/// </summary>
/// <param name="createdTime"></param>
/// <param name="closedDateTime"></param>
/// <param name="resolutionTime"></param>
/// <returns>Timespan</returns>
public static TimeSpan GetNumberOfHoursLeftToResolution(DateTime createdTime, DateTime? closedDateTime, long resolutionTime)
{
var now = DateTime.Now;
var diff = new TimeSpan(0);
bool isNegative = false;
var startWithResolutionHours = createdTime.AddTicks(resolutionTime);
// task is closed
if (closedDateTime.HasValue)
{
diff = (startWithResolutionHours - closedDateTime.Value);
isNegative = closedDateTime.Value >= startWithResolutionHours;
}
else
{
// task is still open
diff = (startWithResolutionHours - now );
isNegative = now.AddTicks(resolutionTime) >= startWithResolutionHours;
}
var result = new TimeSpan(diff.Days, diff.Hours, diff.Minutes + ((diff.Seconds > 0) ? 1 : 0), 0);
if (isNegative)
{
return -result;
}
//count of all difference between times
return result.Add(-new TimeSpan(resolutionTime));
}
我会把它缩短一点
public static TimeSpan GetNumberOfHoursLeftToResolution(DateTime createdTime,
DateTime? closedDateTime, long resolutionTime)
{
var currentPoint = closedDateTime ?? DateTime.Now;
return new TimeSpan(resolutionTime - (currentPoint - createdTime).Ticks);
}
public static TimeSpan GetNumberOfHoursLeftToResolution(DateTime createdTime,
DateTime? closedDateTime, long resolutionTime)
{
var currentPoint = closedDateTime ?? DateTime.Now;
return new TimeSpan(resolutionTime - (currentPoint - createdTime).Ticks);
}