2013-02-03 2 views
2

같은 테스트 어셈블리에서 다음과 같은 방식으로 N 개의 MSTest 테스트 클래스와 메서드를 사용합니다 (동일한 정적 변수 사용).각 MSTest 테스트 메서드의 시작 부분에서 정적 변수 재설정

[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) 
    } 
} 

이러한 테스트는 통과 되었습니까? 내 요점은 MSTest가 테스트 메소드를 실행하여 항상 MyClass.StaticVariable을 초기화하고 단 한 번만 증가하도록 허용한다는 것입니다. 다음과 같은 시나리오가 발생할 수 있습니까?

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!) 
+0

내가 아니에요 아주 MSTest 경험이 있지만 NUnit 꽤 많이 사용하고 내 경험 NUnit 정렬 (알파벳순) 어셈블리의 모든 테스트를 정렬하고 모든 동 기적으로 이동합니다. 나는 MSTest로가는 것이 같을 것이라고 생각한다. –

+0

그렇다면 나는 행복한 야영자가 될 것이다. 테스트를 특정 순서로 실행하지 않아도 동 기적으로 실행하면 충분합니다. – Harindaka

답변

1

MSTEST는 멀티 스레딩을 지원하지만 당신은 테스트 설정 파일에 turn it on해야합니다. 기본적으로 모든 테스트는 동 기적으로 실행됩니다. 각 테스트 실행에 변수를 재설정할지

또한, 거기에 당신이하는 방법에 배치 할 수있는 속성이며, 그 방법은 그 클래스의 각 시험 전에 실행됩니다

[TestInitialize()] 
public void TestInit() 
{ 
    MyClass.StaticVariable = 0; 
} 
+0

감사합니다. TestInit에 매개 변수를 전달할 수 있는지 궁금합니다. MyClass.StaticVariable이 객체이고 재설정 할 MyClass.StaticVariable = new StaticVariableClass (매개 변수)와 같은 작업을 수행해야하는 경우 어떻게 될까요? 각 단위 테스트 방법으로 매개 변수가 변경되면 TestInitialize를 사용하여 여전히 달성 할 수 있습니까? – Harindaka

+0

@Harindaka 단위 테스트마다 매개 변수를 변경해야하는 경우 테스트 자체에 있어야하며 TestInitialize 메서드는 실제로 적용되지 않습니다. –

관련 문제