MStest 框架 如何在一个方法触发try/catch中的 catch

如题:

public void HelloUT()
    {
                    try{
                            var db= database.connection();
                            var returnValue = db.get("select * from people");
                            return returnValue;
                    }
                    catch(Exception ex)
                    {
                            Log4net.log(ex.Message);
                    }
    }

问题是如何使用UT 测试HelloUT 方法的时候 保证catch 里面的方法也会覆盖???

和有没有参数无关,比如如下代码

void writetolog(string s)
{
try
{
System.IO.AppendAllText("log.txt", s);
}
catch (FileNotFoundException ex)
{
...
}
}
难道你就能控制catch么。

你要触发,唯一的办法就是在被测试代码内部嵌入代码,比如

                    try{
                                        #if UNITTEST
                                        throw new Exception();
                                        #endif
                            var db= database.connection();
                            var returnValue = db.get("select * from people");
                            return returnValue;
                    }

或者你不直接throw,而是调用一个方法,将丢出什么异常,如何丢出异常的决定权交给这个函数实现。