System.Configuration.ConnectionStringSettingsCollection.this [string] .get与单元测试一起返回null

时间:2019-11-25 21:28:54

标签: c# sql-server null connection-string

当我尝试对解决方案(我的解决方案包含5层,DAO,实用程序,实体,UI,DB)进行单元测试时,在实用程序中有一个类在DATABASE和解决方案之间创建连接名称是“ CONEXION.cs” 当我这样做时:

[TestClass]
public class CONSULTARPERFILES
{
    [TestMethod]
    public void CONSULTARPERFIL()
    {
        var a = new PERFILESNEGOCIO();

        var b = a.CONSULTARLISTADOPERFILES();

        Assert.IsTrue(true,"No encontrado");
    }
}

我在var b = a.CONSULTARLISTADOPERFILES();调试项目中得到一个空引用,发现了这一点:

public class CONEXION
{
    public string CadenaConexion()
    {
        return WebConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;

    }        
}

我的问题是:return WebConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;

我也使用了这个:return ConfigurationManager.ConnectionStrings["CadenaConexion"].ToString();

这是我在Web.config中的ConnectionString:

 <connectionStrings>
    <add name="CadenaConexion" connectionString="Data Source=LAPTOP-0KMO6KG3;Initial Catalog=Serviteca;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

我该如何解决?请

1 个答案:

答案 0 :(得分:0)

为了在单元测试中使用连接字符串,您需要在单元测试项目中创建一个单独的app.config文件,并将连接字符串复制到其中。它不会自动从您的Web项目中提取。

示例解决方案:

  • MyWebProject
    • web.config(带有连接字符串)
  • MyUnitTestProject
    • app.config(带有连接字符串)

MyUnitTestProject 中运行的代码会将配置(连接字符串,应用设置等)从app.config local 拖到该项目,而不是从web.config

>

侧面说明:在单元测试中进行数据库调用通常不是一个好主意。我们倾向于避免在单元测试中碰到实际的数据库,因为这通常表明测试太大。设置CI / CD管道时,它也可能无法正常工作,因为它们可能无法访问您本地的开发数据库。