Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在vs2012中单击“重新使用app.config”时取消禁用;“运行所有测试”;关于多项目解决方案?_C#_Visual Studio 2012_.net 4.0_Nunit - Fatal编程技术网

C# 在vs2012中单击“重新使用app.config”时取消禁用;“运行所有测试”;关于多项目解决方案?

C# 在vs2012中单击“重新使用app.config”时取消禁用;“运行所有测试”;关于多项目解决方案?,c#,visual-studio-2012,.net-4.0,nunit,C#,Visual Studio 2012,.net 4.0,Nunit,我有一个visual studio 2012解决方案,其中包含两个项目projA和projB,以及两个测试项目projA_测试和projB_测试(使用NUnit)。ProjA和ProjB都有自己的app.config和自己的appsettings键/值对。当我单击“运行所有测试”时,projA单元测试将在projB单元测试之后运行。但是由于ConfigurationManager.AppSettings仅具有projA中app.config的值,一些projB单元测试失败!这是正常行为还是我的配

我有一个visual studio 2012解决方案,其中包含两个项目projA和projB,以及两个测试项目projA_测试和projB_测试(使用NUnit)。ProjA和ProjB都有自己的app.config和自己的appsettings键/值对。当我单击“运行所有测试”时,projA单元测试将在projB单元测试之后运行。但是由于ConfigurationManager.AppSettings仅具有projA中app.config的值,一些projB单元测试失败!这是正常行为还是我的配置设置有问题

编辑
我忘记提到的一点是,TeamCity(我们的CI服务器)没有通过测试。因此,我的本地单元测试运行程序似乎在做一些奇怪的事情。

对于每个单元测试,您只需设置
配置管理器的值即可

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
    }

我唯一的问题是,我们已经有超过10000个这样编写的测试。我忘了提到的另一点是TeamCity(我们的CI服务器)没有通过测试。所以我本地的单元测试运行人员似乎在做一些奇怪的事情。。
ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("Name", "ConnectionString"));