NUnit测试代码的问题???????????
难道分不够?
需要测试一个数据库的添加操作是否正确。
代码太多大致结构如下:
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




