我周围搜索,没有答案为我工作。我有2个ASP.NET项目,其中一个是我的项目,另一个是包含单元测试的项目。C#在单元测试中注入ConfigurationManager
# Projects
Project.Core
...
secretConnectionStrings.config
Web.config
Project.Tests
在Project.Core
,我有一个请求都连接字符串(从secretConnectionStrings.config
和应用程序从web.config文件中的设置。执行它自己的方法,正确的价值观都来自这些配置文件的拉不过,我想我的单元测试中测试这
我的测试看起来像这样(内Project.Tests
):
[TestClass]
public class TestUserController
{
[TestMethod]
public void Post_ShouldReturnNewUser()
{
var controller = new UserController();
var result = controller.Post() as User;
Assert.AreNotEqual(result, null);
}
}
线它炸弹出来是这样的
string cacheConnection = ConfigurationManager.ConnectionStrings["RedisCache"].ConnectionString;
System.NullReferenceException:对象引用未设置到对象
我已经尝试添加web.config
和secretConnectionStrings.config
在我Project.Tests
解决方案的链接的一个实例。这没有奏效,我不想接口到我的web.config(我想要的值,因为它们保存在Project.Core
)。有没有一种解决方案,我可以从Project.Core
的web.config中将值抽取到我的单元测试中?
你的单元测试是在单独的项目。您必须在该项目中添加连接字符串。 – kat1330
有没有办法诉诸于此?我不想通过为2个项目维护两组配置文件来引入另一个可能失败的问题 – Zac
您是否考虑过为ConfigurationManager创建一个包装类,在真实代码中使用包装,然后在单元测试中伪造包装? – lilactiger89