对nunit很失望

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

None.gif using  System;
None.gif
using  NUnit.Framework;
None.gif
using  System.EnterpriseServices;
None.gif
namespace  TransactionTesting
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif[TestFixture]
InBlock.gif[Transaction(TransactionOption.Required)]
InBlock.gif
public class DatabaseFixture:ServicedComponent  
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif[TearDown]
InBlock.gif      
public void TransactionTearDown()
ExpandedSubBlockStart.gifContractedSubBlock.gif      
dot.gif{
InBlock.gif            
if(ContextUtil.IsInTransaction)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                  ContextUtil.SetAbort();
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif      }

ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif}

None.gif


2、修改原有的单元测试代码,使所有的测试都从刚刚写好的类继承

看了这个方法后,我非常激动,真是nice啊!可是经过仔细测试,却发现nunit对这个方法的支持非常不好,运行时会抛出很多异常,难道反射调用com+存在天生的缺陷?(我没看nunit的代码,瞎猜的)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值