如何在DebuggerHiddenAttribute依赖/级联方法中应用

时间:2019-05-21 13:34:26

标签: unit-testing debugging

我试图忽略运行我的测试方法时发生的异常。 我正在使用unitTest产品。

问题何时出现 TestCleanup方法运行。这是一种递归方法。此方法清除测试期间在数据库中创建的所有实体。由于依赖关系,这是一种递归方法。

无论如何,此方法调用都会删除我的ORM(Petapoco)中的通用方法。如果无法删除实体,则会引发异常。任何问题,它将以递归方式再次运行,直到将其删除。

现在的问题是,如果我正在调试VS,则由于删除失败而导致Execute在Execute方法中停止了很多次。但是我无法修改此方法以忽略它。我需要一种在调试测试时忽略此停止的方法。像DebuggerHiddenAttribute之类的方法。

谢谢!

我尝试使用DebuggerHiddenAttribute,但不能在main方法调用的方法中使用。

[TestCleanup(), DebuggerHidden]
public void CleanData()
{
    ErrorDlt = new Dictionary<Guid, object>();
    foreach (var entity in TestEntity.CreatedEnt)
    {
        try
        {
            CallingTest(entity);
        }
        catch (Exception e)
        {
            if (!ErrorDlt.ContainsKey(entity.Key))
                ErrorDlt.Add(entity.Key, entity.Value);
        }
    }
    if (ErrorDlt.Count > 0)
    {
        TestEntity.CreatedEnt = new Dictionary<Guid, object>();
        ErrorDlt.ForEach(x => TestEntity.CreatedEnt.Add(x.Key, x.Value));
        CleanData();
    }
}

public int Execute(string sql, params object[] args)
{
    try
    {
        OpenSharedConnection();
        try
        {
            using (var cmd = CreateCommand(_sharedConnection, sql, args))
            {
                var retv = cmd.ExecuteNonQuery();
                OnExecutedCommand(cmd);
                return retv;
            }
        }
        finally
        {
            CloseSharedConnection();
        }
    }
    catch (Exception x)
    {
        OnException(x);
        throw new DatabaseException(x.Message, LastSQL, LastArgs);
    }
}

不需要错误消息。

0 个答案:

没有答案