(T)源中要覆盖多少个代码块?

时间:2017-07-26 15:11:48

标签: c# unit-testing nunit

纯粹是因为它让我烦恼,我的单元测试中缺少什么代码块? 我有一个通用的映射方法,如下所示:

public static dynamic To<T>(dynamic input)
{
    if (input == null || input is DBNull)
    {
        return null;
    }
    try
    {
        return (T)input; // this line remains gray in code coverage
    }
    catch
    {
        return default(T);
    }
}

我有一些简单的测试:

Assert.Null(Map.To<long>(null));
Assert.Null(Map.To<long>(DBNull.Value));
Assert.AreEqual(20, Map.To<long>(new long?(20)));
Assert.Null(Map.To<long?>("wrong"));

现在我的代码覆盖范围说我覆盖了49个区块中的48个。一个块未被覆盖,它位于return (T)source行的某个位置。

我不禁想到我在这里忽略了一个简单的案例......

N.B。此代码并不是要将所有内容转换为任何内容,它只是在实践中将数据库类型转换为本机类型。在我完成之前,它抛出而不是返回default(T)

0 个答案:

没有答案