기본 테스트 클래스에서 TestContext 또는 다른 메서드를 사용하여 MSTest 프레임 워크에서 처리 한 예외를 얻을 수있는 방법이 있습니까?MSTest 테스트 컨텍스트 예외 처리
테스트 중 하나에서 처리되지 않은 예외가 발생하면 exception.Data 사전의 모든 항목을 검색하여 테스트 결과에 표시하여 테스트가 실패한 이유를 알아낼 수있게 도와줍니다. 프로덕션 환경에서 디버깅 할 수 있도록 데이터를 예외에 추가하십시오. 따라서 테스트를 위해 동일한 작업을 수행하고 싶습니다.)
참고 : 예외가 있음 (다른 테스트가 있음)을 테스트하지 않고 유효한 사례를 테스트하고 있으며 예외 데이터를 확인해야합니다.
다음은 내가 말하는 것에 대한 코드 예입니다.
[TestMethod]
public void IsFinanceDeadlineDateValid()
{
var target = new BusinessObject();
SetupBusinessObject(target);
//How can I capture this in the text context so I can display all the data
//in the exception in the test result...
var expected = 100;
try
{
Assert.AreEqual(expected, target.PerformSomeCalculationThatMayDivideByZero());
}
catch (Exception ex)
{
ex.Data.Add("SomethingImportant", "I want to see this in the test result, as its important");
ex.Data.Add("Expected", expected);
throw ex;
}
}
테스트가있는 경우, 그러나
... 난 아마 이러한 캡슐화 방법을 가지고 있지해야하는 이유 주위에 문제가 이해하지만, 우리는 또한 PerformSomeCalculation의 모든 기능을 테스트하는 하위 검사를 실패, 99 %의 시간, 나는 그것을 다시 통과하므로이 정보 없이는 아무것도 디버깅 할 수 없습니다. 나는 또한 GLOBAL 수준에서 이것을하고 싶습니다. 그래서 어떤 테스트가 실패하면, 각각의 개별 테스트를 위해 그것을하는 것과 반대로 테스트 결과에 정보를 얻습니다.
다음은 테스트 결과에 예외 정보를 넣을 코드입니다.
public void AddDataFromExceptionToResults(Exception ex)
{
StringBuilder whereAmI = new StringBuilder();
var holdException = ex;
while (holdException != null)
{
Console.WriteLine(whereAmI.ToString() + "--" + holdException.Message);
foreach (var item in holdException.Data.Keys)
{
Console.WriteLine(whereAmI.ToString() + "--Data--" + item + ":" + holdException.Data[item]);
}
holdException = holdException.InnerException;
}
}
도 참조하십시오. http://stackoverflow.com/questions/37660311/method-for-handling-exceptions-in-mstest/39208343#39208343 – Almund