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并发测试,我能读到更多的参考细节吗?我听说你。。。有时候你会继承一些很难测试的东西。我听说你。。。有时你会继承一些很难测试的东西。