I have a N number of MSTest test classes and methods in the same test assembly in the following manner (which makes use of the same static variable).
[TestClass]
public class TestClass1
{
[TestMethod]
public void TestMethod1A()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
[TestMethod]
public void TestMethod1B()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
}
[TestClass]
public class TestClass2
{
[TestMethod]
public void TestMethod2A()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
[TestMethod]
public void TestMethod2B()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
}
Are these tests guaranteed to pass? My point being does MSTest execute test methods synchonously always allowing MyClass.StaticVariable to be initialized and incremented only once before being asserted? Can the following scenario take place?
1. TestMethod1A makes MyClass.StaticVariable 0
2. TestMethod2B increments MyClass.StaticVariable by 1
3. TestMethod1A increments MyClass.StaticVariable by 1 (making the value equal to 2)
4. TestMethod1A asserts (Fail!)