【问题标题】:System.Configuration.ConnectionStringSettingsCollection.this[string].get returned null with Unit testsSystem.Configuration.ConnectionStringSettingsCollection.this[string].get 使用单元测试返回 null
【发布时间】:2019-11-25 21:28:54
【问题描述】:

当我尝试对我的解决方案进行单元测试时(我的解决方案包含 5 层,DAO、Utilities、ENTITIES、UI、DB),在 Utilites 中有一个类在 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>

我该如何解决?请

【问题讨论】:

  • 为了在单元测试中使用连接字符串,您需要在单元测试项目中创建一个单独的 app.config 文件并将连接字符串复制到其中。它不会自动从您的 Web 项目中提取。虽然可能不是一个好主意。我们倾向于避免在单元测试中碰到实际的数据库,因为这通常表明测试太大。

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


【解决方案1】:

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

示例解决方案:

  • 我的网络项目
    • web.config(带连接字符串)
  • MyUnitTestProject
    • app.config(带连接字符串)

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

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

【讨论】:

  • 我的 UnitTestProject 使用我的 WebProject,我的 WebProject 中的一个类使用 web.config 连接数据库。我也可以改一下吗=
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多