接口上的.NET代码契约破坏了代码覆盖率分析

时间:2013-11-27 08:59:50

标签: c# unit-testing code-coverage code-contracts

我需要一些帮助来确定如何在同一解决方案中使用代码约定和Visual Studio代码覆盖率分析。

我在接口上使用了推荐的代码契约方法。见下面的例子。但是当运行代码覆盖率分析时,它不会查看生产代码,只会查看“接口”上的代码合同。

/// <summary>
/// Defines a task handler to be used in the processing
/// </summary>
[ContractClass(typeof(ITaskHandlerCodeContract))]
public interface ITaskHandler
{
    /// <summary>
    /// Processes the specified task.
    /// </summary>
    /// <param name="task">The task to process.</param>
    /// <returns>Returns the result of the task processing</returns>
    TaskResponse Process(TaskRequest task);
}

[ContractClassFor(typeof(ITaskHandler))]
abstract class ITaskHandlerCodeContract : ITaskHandler
{
    public TaskResponse Process(TaskRequest task)
    {
        Contract.Requires<ArgumentNullException>(task != null);
        Contract.Requires<ArgumentException>(task.CommandOrderID != null);
        Contract.Requires<ArgumentException>(!string.IsNullOrEmpty(task.TaskCode));
        Contract.Requires<ArgumentException>(task.TaskRequestID != null);
        throw new NotImplementedException();
    }
}

当我对此进行代码覆盖率分析时,它无法在实际实现中显示代码覆盖率。

如果有人能帮助我正确设置,我会永远感激。

0 个答案:

没有答案