单元测试>;检测到无法访问的代码警告

本文关键字:访问 代码 警告 gt 检测 单元测试 | 更新日期: 2023-09-27 18:11:34

问题

编译器在返回行给我一个警告,并显示一条消息:

检测到无法访问的代码

问题

我如何重构我的单元测试,这样我就不会收到编译器的警告?任何其他反馈也欢迎。

代码

我有一个Bar类,它封装WCF调用。若异常发生在调用内部的某个位置,则包装器将记录错误并引发WCF故障。这是类别:

public class Bar
{
    private readonly ILog _execeptionLog;
    public Bar(ILog execeptionLog)
    {
        if (execeptionLog == null) 
            throw new ArgumentNullException("execeptionLog");
        _execeptionLog = execeptionLog;
    }
    public TResult TryExecute<TResult>(Func<TResult> action)
    {
        if (action == null) 
            throw new ArgumentNullException("action");
        try
        {
            return action.Invoke();
        }
        catch (Exception ex)
        {
            _execeptionLog.Error(ex.ToString());
            var fault = FooFault.CreateFrom(ex);
            throw new FaultException<FooFault>(fault);
        }
    }
}

我试着对这个类进行单元测试,以确保我得到了一个具有正确细节的错误。这是我的单元测试方法

[Test]
public void TryExecute_ActionThrowsException_FaultDetailIsNotNull()
{
    //Arrange
    var mock = MockRepository.GenerateMock<ILog>();
    var uut = new Bar(mock);
    var ex = new ArgumentException("foo");
    try
    {
        //Act
        int actual = uut.TryExecute(() =>
        {
            throw ex;
            return 1; //<<<<<<<< Unrechable code detected here
        });
    }
    catch (FaultException<FooFault> fault)
    {
        //Assert
        Assert.IsNotNull(fault.Detail);
    }
}

单元测试>;检测到无法访问的代码警告

你可以这样做。。。

int actual = uut.TryExecute<int>(() =>
{
    throw ex;
    // return 1; //<<<<<<<< Unrechable code detected here
});

这是满的。。。

var uut = new Bar(null);
var ex = new ArgumentException("foo");
try
{
    int actual = uut.TryExecute<int>(() =>
    {
        throw ex;
    });
}
catch (Exception fault)
{
    Assert.IsNotNull(fault.Message);
}