匪夷所思

自强不息,厚德载物
随笔 - 84, 文章 - 37, 评论 - 660, 引用 - 7
数据加载中……

NUnit奇怪问题的解决

        前些天在使用NUnit写测试数据库访问层的测试类时出现一个奇特的问题——取不到字串
        string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
终于解决了。
        一开始Koffer认为是NUnit里有何Net里“ConfigurationSettings.AppSettings”冲突的方法。
        hBifTs(网友)和愚以为是编译成DLL的类库不能访问Config文件。后来改为生成exe文件还是访问不到Config里的:
        <appSettings>
              <add key="ConnectionString" value="Data Source=localhost;DataBase=Test;User ID=sa;Password=">
              </add>
         </appSettings>
        后来,Jonathon提醒说Config和数据连接层的DLL不在一个目录,找不到。于是把Config 考到同一目录还是不行。甚至后来考到数据连接层的bin目录也不行!
        尝试了好几天,失望至极!
        晚上,不甘心又弄了半天。
        看到有人写Config 的名称为“XXX.DLL.Config”方式。心想不可能名称也有问题吧!
        反正“死马当活马医”!把Config名字改成“DataAccess.dll.Config”。竟然OK了!
注意:DLL和Config文件必须在一个目录;
      “项目名.dll”对应“项目名.dll.Config”;
      “程序集.dll”对应“程序集.dll.Config”;
      “DataAccess.dll.Config”不能写成“DataAccess.Config”。
记得,别轻易放弃,再Try一次把!

posted on 2004-03-28 01:52 不至于 阅读(3647) 评论(12)  编辑 收藏 网摘

评论

#1楼   回复  引用    

呵...我记得我在评论里面说过.默认情况下面.Dll工程的config文件是不会被自动复制到最后生成的目录里面的.而且正如你上面自己说的,也是不会被自动改名的.
你可以注意一下生成的EXE文件的工程.你增加config文件后,在生成的目录里面总会有一个xxx.exe.config文件..这些工作是VS.NET IDE自动完成的,这就是我推荐以后尽量使用EXE工程的原因,,反正把这个EXE工程改为Dll工程也很简单..对不对?
2004-03-28 09:59 | hBifTs

#2楼   回复  引用    

呵...我记得我在评论里面说过.默认情况下面.Dll工程的config文件是不会被自动复制到最后生成的目录里面的.而且正如你上面自己说的,也是不会被自动改名的.
你可以注意一下生成的EXE文件的工程.你增加config文件后,在生成的目录里面总会有一个xxx.exe.config文件..这些工作是VS.NET IDE自动完成的,这就是我推荐以后尽量使用EXE工程的原因,,反正把这个EXE工程改为Dll工程也很简单..对不对?
2004-03-28 10:00 | hBifTs

#3楼   回复  引用    

好像没说到~~
2004-03-28 12:33 | 不至于

#4楼   回复  引用    

注意:DLL和Config文件必须在一个目录;
“项目名.dll”对应“项目名.dll.Config”;
“DataAccess.dll.Config”不能写成“DataAccess.Config”。
记得,别轻易放弃,再Try一次把!
----------------------------------------------------------------------
不是项目名,应该是程序集名。:)
2004-03-28 12:37 | Chainet[未注册用户]

#5楼   回复  引用    

谢谢指出,本来是指这个意思的.
马上纠正!
2004-03-28 13:08 | 不至于

#6楼   回复  引用    

这个问题Nunit的资料中已经指出了
2004-03-29 09:23 | Meyer

#7楼   回复  引用    

但是我发现如果是在Exe中调用Dll文件,读取的还是Exe.Config,而不是Dll.Config啊。这个问题又怎么解决呢?
2005-02-03 16:17 | Xrinehart

#8楼   回复  引用    

今天也碰到了这个问题,谢谢了! :)
2005-02-26 10:00 | caff[未注册用户]

#9楼   回复  引用    

我想学NUNIT,大家给我推荐本书!
2005-07-14 13:26 | baby[未注册用户]

#10楼   回复  引用    

那以下这段代码和在NUNIT中运行后的错误提示也是这个问题喽?
public int Insert(string jobcode,string jobname)
{
string strSql=string.Empty;

strSql="insert into CDC_PROFESSION( JOBCODE,JOBNAME) values ('"
+jobcode
+"',"
+jobname
+"')";

int ret=0;
DataAccess.Instance.Execute(strSql,out ret);
return ret;
}
我写的下面的测试代码如下:
using System;
using NUnit.Framework;
using CDCBussiness.BaseInfo;
namespace cdc_test
{
/// <summary>
/// 插入没有起始日期的情况
/// </summary>
[TestFixture]
public class Profession_test
{
Profession pro = new Profession();
[Test]

public void Insert_test()
{

int ret = pro.Insert("1111","lose job");
Assert.AreEqual(0,ret);
Console.WriteLine("ok");
}
}
}
在NUNIT中运行后有如下出错提示:
at CDCSystem.SystemConfig.GetSettings() in E:\cdc\CDCSystem\Config.cs:line 22
at CDCData.DataBase.OracleHelper.get_ConnectionString() in E:\cdc\CDCData\DataBase\OracleHelper.cs:line 44
at CDCData.DataBase.OracleHelper.Execute(String strSql, Int32& ret) in E:\cdc\CDCData\DataBase\OracleHelper.cs:line 2324
at CDCBussiness.BaseInfo.Profession.Insert(String jobcode, String jobname) in E:\cdc\CDCBussiness\BaseInfo\Profession.cs:line 40
at cdc_test.Profession_test.Insert_test() in e:\cdc\cdc_test\class1.cs:line 18
2005-08-17 16:07 | shengyan[未注册用户]

#11楼   回复  引用    

请教了
2005-08-17 16:07 | shengyan[未注册用户]

#12楼   回复  引用    

ATest.cs
ATest.DLL
ATest.DLL.Config
测试的配置文件是要和测试工程中的名字一样。
2006-09-09 10:21 | Joe[匿名][未注册用户]

#13楼   回复  引用    

不错,我也是用到了这种技术。
2007-11-15 11:15 | 12332112333[未注册用户]



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 4415




相关文章:

相关链接: