Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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# 如何基于静态变量的不同值在VS中运行单元测试?_C#_Unit Testing_Static_Vs Unit Testing Framework - Fatal编程技术网

C# 如何基于静态变量的不同值在VS中运行单元测试?

C# 如何基于静态变量的不同值在VS中运行单元测试?,c#,unit-testing,static,vs-unit-testing-framework,C#,Unit Testing,Static,Vs Unit Testing Framework,我正在尝试编写一个单元测试,以确保基于静态变量的不同值的方法的结果是正确的 下面是一个简单的例子: public void TestMethod1() { Object1.StaticMember = 1 Object2 test = new Object2(); Assert.AreEqual("1", test.getStaticVal()); } public void TestMethod2() { Object1.StaticMember =

我正在尝试编写一个单元测试,以确保基于静态变量的不同值的方法的结果是正确的

下面是一个简单的例子:

public void TestMethod1()
{
     Object1.StaticMember = 1
     Object2 test = new Object2();
     Assert.AreEqual("1", test.getStaticVal());
}

public void TestMethod2()
{
     Object1.StaticMember = 2
     Object2 test = new Object2();
     Assert.AreEqual("2", test.getStaticVal());
}

我被告知VS2012中的单元测试是同时进行的,所以测试有可能失败。这是真的吗?如何编写测试以一次运行一个测试?

可能有一种更优雅的方法,但您始终可以使用这样的锁对象

    private static Object LockObject = new object();

    public void TestMethod1()
    {
        lock(LockObject)
        {
            Object1.StaticMember = 1;
            Object2 test = new Object2();
            Assert.AreEqual("1", test.getStaticVal());
        }
    }

    public void TestMethod2()
    {
        lock (LockObject)
        {
            Object1.StaticMember = 2;
            Object2 test = new Object2();
            Assert.AreEqual("2", test.getStaticVal());
        }
    }

可能有一种更优雅的方法,但您可以始终使用这样的锁定对象

    private static Object LockObject = new object();

    public void TestMethod1()
    {
        lock(LockObject)
        {
            Object1.StaticMember = 1;
            Object2 test = new Object2();
            Assert.AreEqual("1", test.getStaticVal());
        }
    }

    public void TestMethod2()
    {
        lock (LockObject)
        {
            Object1.StaticMember = 2;
            Object2 test = new Object2();
            Assert.AreEqual("2", test.getStaticVal());
        }
    }

可能重复。真的是这样吗?这意味着这两个测试在VS2010中反复通过了吗?关于正在运行的VS2012并发测试,我能读到更多的参考细节吗?可能是重复的。这真的意味着这两个测试会在VS2010中反复通过吗?关于正在运行的VS2012并发测试,我能读到更多的参考细节吗?我听说你。。。有时候你会继承一些很难测试的东西。我听说你。。。有时你会继承一些很难测试的东西。