Han*_*sir 8 .net c# logging unit-testing exception
我在我的数据访问类中有这个方法,我有一个单元测试,以确保它正常工作,但我的测试不测试异常所以我的问题是我应该创建一个新的测试来强制引发异常或我应该相信catch块在异常的情况下会正常工作吗?值得努力吗?
这是一个例子:
public void UpdateProject(Project project)
{
using (var transaction = _session.BeginTransaction())
{
try
{
_session.Update(project);
_session.Flush();
transaction.Commit();
}
catch (HibernateException)
{
transaction.Rollback();
throw;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 11
理想情况下,您应该尝试测试您可以使用的每一行代码......这将意味着强制发生异常以测试异常处理程序,并确保其正常工作.
在实践中,总会有一些代码行未被覆盖 - 但是,我会通过模拟强制执行异常,以便测试您认为至关重要的任何异常处理程序,尤其是在生产中可能发生的异常处理程序.
在Linux内核中,驱动程序中80%的错误都在错误处理代码中.
异常处理是许多错误的根源,您肯定应该测试所有异常路径.
当然你无法测试每一行代码.但统计数据显示程序员对异常处理的关注较少,因此您必须彻底测试它们.