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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    我这样写
    [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的方法。应该如何扑获错误?
      

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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