CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

NUnit测试代码的问题???????????

楼主xhbmj(《升龙道》)2005-05-13 18:41:14 在 .NET技术 / ASP.NET 提问

难道分不够?  
  需要测试一个数据库的添加操作是否正确。  
  代码太多大致结构如下:  
   
  public   class   FunctionAdd:   System.Web.UI.Page  
  {  
      ...  
      private   void   btnSave_Click(object   ....)  
      {  
          ...数据库操作  
      }  
  }  
  基本是这样的。  
   
  NUnit里如何写  
  问题点数:100、回复次数:13Top

1 楼fancyf(凡瑞)回复于 2005-05-13 18:45:51 得分 25

在测试函数中应该先添加数据,然后再读取这一条记录,把读出来的记录与添加的记录作一下比较  
  Assert.AreEqual(取出来的数据,原来的数据);Top

2 楼gyf19(秋天的云)回复于 2005-05-13 18:46:13 得分 0

UPTop

3 楼xhbmj(《升龙道》)回复于 2005-05-13 18:47:49 得分 0

OK,明白了。  
  这岂不是取数据的时候又会有Bug方面的问题?Top

4 楼xhbmj(《升龙道》)回复于 2005-05-13 18:48:53 得分 0

还有如果只是在页面上显示数据如何去测?  
  Top

5 楼fancyf(凡瑞)回复于 2005-05-13 18:55:44 得分 20

存数据、取数据的过程不准有任何错误,哪一个环节出了错最后的AreEqual都得不到正确的结果  
   
  只是在页面上显示数据没法事先知道这条数据应该是什么,因此没法用AreEqual来测试,只能判断一下是不是有异常抛出,或是判断一下数据的范围是否对  
   
  还一种办法就是先在数据库中写入一条记录,然后把这条记录的内容直接写在AreEqual中。比如我手工插入一条name字段为fancyf的数据,然后读取数据库中的这条数据以后  
  Assert.AreEqual("取出来的数据",   "fancyf");  
  这个办法有点死,数据库一变测试函数也要跟着变Top

6 楼xhbmj(《升龙道》)回复于 2005-05-14 13:25:21 得分 0

我这样写  
  [Test]  
  [ExpectedException(typeof(Exception))]  
  private   void   btnSave_Click(object   sender,   System.EventArgs   e)  
  {  
  string   FunctionName   =   "fff";  
  string   FunctionLink   =   "xhblink";  
  if(FunctionName!=""||FunctionLink!="")  
  {  
  string   ConnectionStr=System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"];  
   
  string   sql   =   "Insert   into   FunctionModule(F_Name,F_Link)values('"+   FunctionName   +"','"+   FunctionLink   +"')";  
  SqlConnection   conn   =   new   SqlConnection(ConnectionStr);  
  conn.Open();  
  SqlCommand   sc   =   new   SqlCommand(sql,conn);  
  sc.ExecuteNonQuery();  
  }  
  }  
  总是出现黄色的进度条。我想看到绿色的,它提示我应该用Public的方法。应该如何扑获错误?Top

7 楼brando_beat(Eの懒龙)回复于 2005-05-14 14:07:10 得分 0

upTop

8 楼fancyf(凡瑞)回复于 2005-05-14 14:20:16 得分 10

测试函数不能这样写,要测试的函数签名必须是public   void   Function()才行,你那个函数不符合要求  
   
  而且强烈推荐不要和正常的代码写在同一个类中,不然程序发布的时候还要删掉测试代码,麻烦,而且修改了代码需要再次测试  
  Top

9 楼orcale()回复于 2005-05-14 14:27:55 得分 5

http://www.microsoft.com/china/community/Column/59.mspxTop

10 楼saucer(思归)回复于 2005-05-14 14:43:29 得分 20

你没明白什么叫UNIT   TEST  
   
  [Test]  
  [ExpectedException(typeof(Exception))]     <---////这里说你的方法将抛出一个异常,你的异常呢?  
  public   void   TestInsert()      
  {  
  ...  
   
  另外,真正想用NUNIT来验证数据库操作的话,你其实应该用类似dotnetmock   那样的架构,参加这本书里的例子  
   
  http://www.china-pub.com/computers/ebook20001-25000/22980/ch6.pdfTop

11 楼xhbmj(《升龙道》)回复于 2005-05-14 14:45:49 得分 0

[Test]  
  //[ExpectedException(typeof(Exception))]  
  public   void   test()  
  {  
  ...执行插入操作...  
  }  
  我这样写是绿色的  
  去掉注释[Expected..],就红色了。是不是抛出异常写的不对...  
  马上诘贴Top

12 楼saucer(思归)回复于 2005-05-14 21:26:03 得分 15

[ExpectedException(typeof(Exception))]  
   
  是说你的编码会抛出一个Exception异常,如果你没抛出,NUNIT就认为你的编码有问题,所以就变红了  
   
  先找本教程看看吧  
   
   
  [Test]  
  [ExpectedException(typeof(Exception))]  
  public   void   TestInsert()      
  {  
      YourMethod();  
  }  
   
   
  in   YourMethod(),..  
   
  throw   new   Exception();  
   
  Top

13 楼ofei(nop)回复于 2005-05-14 22:59:34 得分 5

去掉注释[Expected..],就红色了   说明测试没通过~  
   
  你可以看nunit里的sample  
  或看   单元测试之道-c#版  
   
  Top

相关问题

  • 谁用过NUnit,怎么用NUnit自动测试.NET代码?
  • 测试死链接代码
  • Nunit测试。。。。
  • 帮忙测试一下代码.
  • 如何写spring+hibernate的测试代码
  • 软件测试——发送源代码!
  • VC6编的Active X代码控件,在VB6环境下测试
  • CSDN助手.net 测试版试用发行(提供源代码)
  • 测试一段代码的运行时间!!!!!
  • 谁有软件开发\测试的国家标准代码表?

关键词

  • 测试
  • 数据
  • 代码
  • 函数
  • 数据库
  • functionlink
  • areequal
  • 记录
  • functionname
  • 添加

得分解答快速导航

  • 帖主:xhbmj
  • fancyf
  • fancyf
  • fancyf
  • orcale
  • saucer
  • saucer
  • ofei

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo