2013-03-05 3 views
1

사용자 지정 메시지와 기본 메시지를 결합하는 Assert.AreEqual(object, object, string)에 대한 메시지를 지정하는 방법이 있습니까?사용자 지정 메시지 및 기본 메시지

나는 다음과 같은 코드가 있습니다 아마도

Assert.AreEqual failed. Expected:<True>. Actual:<False>.

:

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), combinedMessage); 
} 

내가 아래 VS 단위 테스트 프레임 워크에서 예를 메시지에 추가하여 테스트 케이스 키를 지정하고 싶습니다를 Failed on the following test case: AB과 같은 것입니다.

+0

캔트 당신은 두 문자열을 연결? – Blachshma

+0

Assert.AreEqual failed가 정적이 아닙니다. 프레임 워크에서 나오는 것은 무엇이든 사용하고 싶습니다. –

답변

3

과부하가 자동으로 수행됩니다.

[TestMethod] 
    public void Test() 
    { 
     Assert.AreEqual(true, false, "Failed on the following test case: AB"); 
    } 

을 그리고 오류 메시지가 출력했다 : 시험 삼아 I 출력이 어떻게 될지 볼이 시험 방법을 만들어 기본 메시지에 결합 Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB

메시지 매개 변수가 이미 추가됩니다 /. 귀하의 경우를 들어

방금 ​​테스트를 같이 할 수있는 테스트 키를 얻으려면 :

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), 
     "Failed on the following test case: " + testCase.Key.ToString()); 
} 

그리고 테스트 케이스는 각각 자신의 사용자 정의 메시지를해야하는 경우, 그 다음 감각이를 이동 할 것을 testCase 클래스에 대한 사용자 정의 오류 메시지 각 객체의 생성의 일환으로 당신은 그 세 가지 속성을 지정할 수 있습니다 : 구조의

testCase.Value = true; 
testCase.Key = "AB"; 
testCase.FailureMessage = "Failed on the following test case: AB"; 

이 유형의 테스트 케이스의 모든 인스턴스에 대해 추가되는 특정 메시지를 가진이 가능합니다. 이렇게하면 단위 테스트는 다음과 같이 할 수 있도록합니다 :

foreach (var testCase in testCases) 
{ 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), 
     testCase.FailureMessage)); 
} 

하고 예에서 출력으로 나타납니다 Assert.AreEqual failed. Expected:<True>. Actual:<False>. Failed on the following test case: AB

+0

이것은 나를 위해 완벽하게 작동했습니다. 감사. –

0

메시지를 연결 만 하시겠습니까?

foreach (var testCase in testCases) 
{ 
    string message = string.Format("{0}: {1}", defaultMessage, testCase.Key); 
    Assert.AreEqual(testCase.Value, myObj.myMethod(testCase.Key), message); 
} 
+0

특히 테스트 사례와 함께 변경 될 수 있으므로 기본 메시지를 하드 코딩하지 않는 것이 좋습니다. –

관련 문제