![](/img/trans.png)
[英]How to access connection string in VS2012 WPF application from app.config?
[英]NUnit in vs2012 reusing app.config when i click “Run All Tests” on multiple project solution?
我有一个Visual Studio 2012解决方案,其中包含2个项目projA和projB,以及2个测试项目projA_test和projB_test(使用NUnit)。 ProjA和ProjB都有自己的app.config和自己的appsettings键/值对。 当我单击运行时,将运行projA单元测试,然后再运行projB单元测试。 但是由于ConfigurationManager.AppSettings仅包含来自projA的app.config中的值,因此某些projB单元测试失败了! 这是正常现象还是我搞砸了一些配置设置?
编辑 。 我忘记提及的一点是,TeamCity(我们的CI服务器)不会通过测试。 所以我当地的单元测试跑步者似乎做得很奇怪。
对于每个单元测试,您都可以像这样设置ConfigurationManager
的值。
ConfigurationManager.AppSettings["YourKey"] = YourValue;
如果在需要这些值的对象之前执行此操作,它们将正常工作。 如果它们的值用于多次测试,则可以在testfixture设置方法中进行。
类:
public class SomeClass
{
#region Properties
public string Value { get; private set; }
#endregion Properites
#region Constructors
public SomeClass()
{
Value = ConfigurationManager.AppSettings["DatValue"];
}
#endregion Constructors
}
测试:我知道这是MSTest / FluentAssertion,但是概念应该是一样的
[TestMethod]
public void Example()
{
#region Arrange
ConfigurationManager.AppSettings["DatValue"] = "Batman";
#endregion Arrange
#region Act
var someClass = new SomeClass();
#endregion Act
#region Assert
someClass.Should().NotBeNull();
someClass.Should().BeOfType<SomeClass>();
someClass.Value.Should().BeEquivalentTo("Batman");
#endregion Assert
}
该测试通过了我刚刚制作的示例,并且没有可用的app.config文件。 单元测试不应依赖于app.config,否则您将开始从单元测试过渡到集成测试。
请注意,ConnectionStrings有所不同。 您可以将它们添加到ConfigurationManager
,如下所示:
ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("Name", "ConnectionString"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.