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);
    }