测试代码: 
namespace BLLTest
{
    [TestFixture]
    public class AdminControlTest
    {
        [Test]
        public  void Insert()
        {           
            Console.WriteLine("测试开始");
            AdminInfo model = new AdminInfo();
            model.adminID = Guid.NewGuid();
            model.adminName = "wei";
            model.adminPWD = "wei";
            model.email = "[email protected]";
            model.isLock = CheckFlag.激活;
            model.loginTimes = 1;
            model.recentLoginIP = "202.193.56.230";
            model.recentLoginTime = DateTime.Now;
            model.recentLogoutTime = DateTime.Now;
            model.registeTime = DateTime.Now;
            model.trueName = "weijiayi";                       Console.WriteLine("开始插入");
            AdminControl.Insert(model);
            Console.WriteLine("添加成功");
        }
    }    

----------------------------------------------------------------------------------------
Error   and   Failures  显示:   
BLLTest.AdminControlTest.Insert:
System.TypeInitializationException : “PDMS.BLL.AdminControl”的类型初始值设定项引发异常。
  ----> System.ArgumentNullException : 值不能为空。
参数名: assemblyString在 PDMS.BLL.AdminControl.Insert(AdminInfo model)
在 BLLTest.AdminControlTest.Insert() 位置 F:\VSProject\PDMS.root\PDMS\BLLTest\AdminControlTest.cs:行号 48
--ArgumentNullException
在 System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
在 System.Reflection.Assembly.Load(String assemblyString)
在 PDMS.DALFactory.DataAccess.CreateAdmin() 位置 F:\VSProject\PDMS.root\PDMS\DALFactory\DataAccess.cs:行号 19
在 PDMS.BLL.AdminControl..cctor() 位置 F:\VSProject\PDMS.root\PDMS\PDMS.BLL\AdminControl.cs:行号 17--------------------------------------------------------------------------------------------用页面来测试是没有问题的!而且通过页面调用AdminControlTest.Insert()也没有问题!引用上应该也没有问题,因为把页面上引用的全部放到上面测试代码中也不行。
难道NUnit对反射有问题?请高手指教!谢谢了~

解决方案 »

  1.   

    考虑,运行环境nuit 和 asp.net 是不同的
    例如 连接数据库 等
      

  2.   

    用VS2005自带的单元测试出现了:
    InsertTest NUint 测试方法 NUint.MenuControlTest.InsertTest 引发异常:  System.TypeInitializationException: “DBUtility.TableHelper”的类型初始值设定项引发异常。 --->  System.NullReferenceException: 未将对象引用设置到对象的实例。好像都是跟反射有关,因为AdminControl是通过 private static readonly IAdmin dal = DataAccess.CreateAdmin();反射来得到一个SQLServerDAL实例的。
    唉,这错误实在够郁闷的。噢~我和LZ做同一个项目的。
      

  3.   

    问题解决了~把那些数据库连接字符串在底层都用字符串代替,不用ConfigurationManager对象来读取Web.Config里的ConnectionString。这样通过单元测试就没问题了。估计是反射的时候找不到Web.config文件吧。不过不知道怎么配置。请教高手。
      

  4.   

    http://www.cnblogs.com/sonicit/archive/2009/02/16/1255689.html