• 教训:System.TypeInitializationException 类型初始值设定项引发异常




    在单元测试中出现了这个异常,原因是:
    由于在测试项目中没有添加配置文件(只有前台网站项目中添加了 web.config)

    //通过配置文件获取连接字符串
    public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["MyPetShopConnection"].ConnectionString;
    
    public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                SqlCommand cmd = new SqlCommand();
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                int result = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return result;
            }
    
            /// <summary>
            /// 辅助函数
            /// </summary>
            /// <param name="cmd">命令对象</param>
            /// <param name="conn">连接对象</param>
            /// <param name="trans">事务对象</param>
            /// <param name="cmdType">命令类型</param>
            /// <param name="cmdText">命令字符串</param>
            /// <param name="cmdParms">命令参数</param>
            private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
            {
                if(conn.State != ConnectionState.Open)
                    conn.Open();
    
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = cmdType;
    
                if (trans != null)
                    cmd.Transaction = trans;
    
                if (cmdParms != null)
                {
                    foreach (SqlParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }
    
    // 解决方法:添加App.config
     <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="MyPetShopConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Web\MyPetShop\App_Data\MyPetShop.mdf;Integrated Security=True;User Instance=True"/>
      </connectionStrings>
    </configuration>
    



    教训:如果类中存在静态成员,应确保其初始化时不会抛出异常,否则会影响对该类的正常访问
    另外可以参考文章:

    通过七个关键编程技巧得益于静态内容
    http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/us0501StaticsinNET.mspx?mfr=true

    内容转载于略作修改:http://www.cnblogs.com/simply-zhao/archive/2008/03/03/1088213.html



    返回导读目录,阅读更多随笔



    分割线,以下为博客签名:

    软件臭虫情未了
    • 编码一分钟
    • 测试十年功


    随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

  • 相关阅读:
    Ubuntu 图形界面和终端切换
    docker 启动失败
    Windows 压缩文件到 Linux中解压文件名乱码
    PHP注释标记整理
    docker常用命令
    caffe初体验
    css中的单位
    js动态添加div
    Pycharm 2019 添加 docker 解释器
    常用的方法整理
  • 原文地址:https://www.cnblogs.com/08shiyan/p/2195633.html
Copyright © 2020-2023  润新知