51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5255|回复: 7
打印 上一主题 下一主题

求救:NUnit测试C#程序时的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-3-3 11:28:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Url.UnitTest.AreaTest.AddArea : System.NullReferenceException : 未将对象引用设置到对象的实例。

在运行nunit时出现了上述问题,具体的如下:
   at Url.Common.UrlConfig.GetSettings() in e:\公司项目\网齐集\web代码\urlproject\common\urlconfig.cs:line 27
   at Url.Business.Area..ctor() in E:\公司项目\网齐集\Web代码\URLPROJECT\Business\Area.cs:line 107
   at Url.UnitTest.AreaTest.AddArea() in e:\公司项目\网齐集\web代码\urlproject\unittest\areatest.cs:line 42

这到底是什么问题啊,感觉好像跟config文件有关,可是又不知道如何解决!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

8#
发表于 2007-2-9 17:42:50 | 只看该作者

请大家帮帮忙

要测试的方法如下:
public int DeleteWeek(Week wek)
    {

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["weekyConnectionString"].ConnectionString);
        SqlCommand delcmd = new SqlCommand("delete from Week where We_id=@We_id", conn);
        delcmd.Parameters.Add(new SqlParameter("@We_id", wek.We_id));
        conn.Open();
        int i = delcmd.ExecuteNonQuery();
        conn.Close();
        return i;
    }
测试代码如下:
[TestFixture]
    public class WeekTest
    {
        //private Week wk;
        private WeeksDB wkdb = new WeeksDB();
        [Test]
        public void DeleteTest()
        {
            //wk = new Week("1232", "1", "1", "1", "1", "1", "1", "1");
            int a = wkdb.DeleteWeek(new Week("1232", "1", "1", "1", "1", "1", "1", "1"));
            Assert.AreEqual(0,a);
        }
    }

在NUnit按RUN时出现问题如下:
ClassLibrary1.WeekTest.DeleteTest : System.NullReferenceException : 未将对象引用设置到对象的实例。
在 WeeksDB.DeleteWeek(Week wek) 位置 C:\Documents and Settings\Franky\My Documents\Visual Studio 2005\Projects\WebSite4\ClassLibrary1\WeeksDB.cs:行号 157
在 ClassLibrary1.WeekTest.DeleteTest() 位置 C:\Documents and Settings\Franky\My Documents\Visual Studio 2005\Projects\WebSite4\ClassLibrary1\WeekTest.cs:行号 17
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-3-8 12:02:36 | 只看该作者
这个问题我已经解决了,是在string fileName = context.Server.MapPath(filePath); 中出现的问题,context.Server.MapPath(filePath)只有在有页面情况下,才能找到虚拟路径所对应的物理地址,可是在做NUnit测试时没有页面请求,所以可以直接写绝对地址或是用其他方法得到文件。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-3-7 15:03:36 | 只看该作者

re

有几点需要确认:1. MapPath(filePath) 传入形参的是对象还是变量?2. 是否引用相关联的名字空间? 这里可以看出filePath是一个string(非对象),如果要求传入对象,你传的变量肯定是不行的。C#里面好像有个强制转换的功能,把string先进行封装,然后再解析。类似好像装箱,拆箱~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-3-7 11:09:19 | 只看该作者
try
{
        string filePath = GetSettingsFile();
        string fileName = context.Server.MapPath(filePath);                   *******************               

        fs = new FileStream(fileName, FileMode.Open);                  
        data = (ModuleSettings)serializer.Deserialize(fs);
        fs.Close();
                                     
        context.Cache.Insert("Url_ConfigValue", data, new CacheDependency(fileName));
}
catch (System.IO.FileNotFoundException)
{
        data = new ModuleSettings();
}


在标有******号的行出错,错误信息为:“未将对象引用设置到对象的实例”

详细信息为:
   at Url.Common.UrlConfig.GetSettings() in e:\公司项目\网齐集\web代码\urlproject\common\urlconfig.cs:line 39
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-3-3 17:27:59 | 只看该作者
我看以前有同学遇到这种问题,可是只写了“已经解决,封帖”,所以我又重新问一下,希望那位同学能关注这个问题,帮帮忙!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-3-3 17:26:09 | 只看该作者
测试代码编译通过了,只是在NUnit这里Run的时候出错
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2006-3-3 15:27:12 | 只看该作者
你的测试代码编译通过没有啊
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 00:52 , Processed in 0.086318 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表