System.Configuration.ConnectionStringSettingsCollection.this[string].get 单元测试返回 null
System.Configuration.ConnectionStringSettingsCollection.this[string].get returned null with Unit tests
当我尝试对我的解决方案进行单元测试时(我的解决方案包含 5 层、DAO、实用程序、实体、UI、数据库),在实用程序中有一个 class 谁在数据库和解决方案之间创建一个连接,它的名称是 "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 文件,并将连接字符串复制到其中。它不会自动从您的网络项目中提取。
示例解决方案:
- MyWebProject
- web.config(带连接字符串)
- 我的单元测试项目
- app.config(带连接字符串)
MyUnitTestProject 中的代码 运行 将从 app.config local 到该项目,而不是来自 web.config
旁注:在单元测试中进行数据库调用通常不是一个好主意。我们倾向于避免在单元测试中击中实际的数据库,因为这通常表明测试太大了。它在设置 CI/CD 管道时也不能很好地工作,因为它们可能无法访问您的本地开发数据库。
当我尝试对我的解决方案进行单元测试时(我的解决方案包含 5 层、DAO、实用程序、实体、UI、数据库),在实用程序中有一个 class 谁在数据库和解决方案之间创建一个连接,它的名称是 "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 文件,并将连接字符串复制到其中。它不会自动从您的网络项目中提取。
示例解决方案:
- MyWebProject
- web.config(带连接字符串)
- 我的单元测试项目
- app.config(带连接字符串)
MyUnitTestProject 中的代码 运行 将从 app.config local 到该项目,而不是来自 web.config
旁注:在单元测试中进行数据库调用通常不是一个好主意。我们倾向于避免在单元测试中击中实际的数据库,因为这通常表明测试太大了。它在设置 CI/CD 管道时也不能很好地工作,因为它们可能无法访问您的本地开发数据库。