System.Configuration.ConnectionStringSettingsCollection.this



当我尝试对我的解决方案进行单元测试时(我的解决方案包含 5 层,DAO、实用程序、实体、UI、DB(,在 Utilites 中有一个类在数据库和解决方案之间创建连接,它的名字是"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 中的连接字符串:

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

我该如何解决?

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

示例解决方案:

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

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

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

相关内容

最新更新