首页 新闻 赞助 找找看

急丶急丶急 → 关于特性和IOC或者AOP的结合

2
悬赏园豆:100 [已关闭问题] 解决于 2012-07-20 13:29
View Code

上面是我项目中在写单元测试的时候,自定义的一个特性,它的功能能实现数据库的回滚操作!

可是这个特性不能用于一般的方法之中,只能用于单元测试,下面是测试代码:

     [TestClass()]
     public class ProgramTest : TestFixture  //继承这个类
     {
         [TestMethod()]
         [RollBack()]  //添加这个RollBack特性,就能实现回滚了
         public void MyTestTest()
         {
             SqlConnectionStringBuilder connectionString = new SqlConnectionStringBuilder
             {
                 DataSource = @"LBDZ-20120514VC\SQLEXPRESS",
                 InitialCatalog = "My",
             };
             connectionString.IntegratedSecurity = true;
 
             using (SqlConnection conn = new SqlConnection(connectionString.ToString()))
             {
                 conn.Open();
                 SqlCommand cmd = conn.CreateCommand();
                 cmd.CommandText = "INSERT INTO dbo.MyTable (    id) VALUES ( 6666 )";
                 cmd.ExecuteNonQuery();
                 Console.WriteLine("OK");
             } 
             Assert.IsTrue(true);
         }
     }

问题是:第一个 → 它的实现原理是怎么样的

           第二个 → 它为什么不能用于一般的方法之中

希望大家能帮助我,这个问题我纠结了很长时间了,我会重谢的...

TimYang的主页 TimYang | 初学一级 | 园豆:12
提问于:2012-07-16 09:10
< >
分享
其他回答(2)
1

回答第二个问题,
真正起作用的是RollBackAspect,它实现了ITestAspect接口,这个接口在运行测试时调用的。

收获园豆:20
dudu | 园豆:31075 (高人七级) | 2012-07-16 10:51

能不能详细说下这个接口!

支持(0) 反对(0) TimYang | 园豆:12 (初学一级) | 2012-07-16 12:33

@程序猿就是我: 这也没研究过这个接口是如何被调用,如果你想知道究竟,需要看mstest的相关源代码。

支持(0) 反对(0) dudu | 园豆:31075 (高人七级) | 2012-07-16 12:49
1

这个用的是什么测试框架?是自己写的单元测试框架吗?TestFixture类有没有内容?

这个问题不错,+1

收获园豆:10
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-07-16 12:45

这个就是我们公司写的测试框架,而这个部分的作用是关于数据回滚的特性,加上[RollBack]这个特性,数据就会回滚,不信你可以试试看!

我就是不懂它怎么实现的,好像是基于消息机制来做的,不懂啊,求助啊

支持(0) 反对(0) TimYang | 园豆:12 (初学一级) | 2012-07-16 15:10

@程序猿就是我: 这你就要看更多的源码了。正常情况下,是在执行该方法时,由代码判断是否具备RollBack这个attribute,你找找看有没有这方面的代码。

支持(0) 反对(0) 麒麟.NET | 园豆:3614 (老鸟四级) | 2012-07-16 15:24
0

我认为当开启这个属性后,会自动的将代码放入一个事务当中,当测试完成后,对事物进行回滚。类似如下:

开启事务

执行测试代码

比较测试代码(成功/失败)

回滚事务

收获园豆:20
ocean | 园豆:824 (小虾三级) | 2012-07-18 09:13

谢谢你的回答,我想请求你帮个忙,可以帮这段代码加点注释吗?让我可以知道这些代码具体的意思!

因为这些代码真的很难理解!

支持(0) 反对(0) TimYang | 园豆:12 (初学一级) | 2012-07-18 19:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册