对nunit很失望
很多人都介绍了.net下开发的十个必备工具,其中单元测试工具就是nunit。不知道有多少人对它有实际的项目经验;我经过一段时间的使用,对它的一个缺陷很恼火,下面详细介绍一下:
在数据库相关项目的单元测试代码中,需要测试增删改的功能;然而这会使各种功能测试互相影响,破坏测试数据库,产生垃圾数据,使每次单元测试运行在一个未知的状态下,总之是一件很糟糕的事情。
针对这种情况,通常的解决方案是准备一个测试用数据库,每次单元测试结束后,还原这个数据库,这只能称为一种办法,但不漂亮。
我通过查阅资料,发现了另外的一种很clean的解决方案:“利用com+的自动事务!”
基本处理方法是这样的:
1、写一个从ServicedComponent继承的类,声明TransactionOption.Required,并在TearDown方法中回滚事务,具体代码如下




















2、修改原有的单元测试代码,使所有的测试都从刚刚写好的类继承
看了这个方法后,我非常激动,真是nice啊!可是经过仔细测试,却发现nunit对这个方法的支持非常不好,运行时会抛出很多异常,难道反射调用com+存在天生的缺陷?(我没看nunit的代码,瞎猜的)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix