我试图忽略运行我的测试方法时发生的异常。 我正在使用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);
}
}
不需要错误消息。