2010-02-02 6 views
1

취성 시험을 피하려고합니다. 잘못된 데이터가 전달되면 메서드에서 예외를 throw하고 어느 것이 든 상관하지 않는다고 주장하고 싶습니다.MSTests에서 예외를 잡을 수 있습니까?

Take String.IsNullOrEmpty 예를 들어 문자열이 비어있는 경우 nullreference 예외를 던지고 싶지 않으십니까? null 인 경우 argumentException을 던질 수 있다고 가정합니다. null 대 빈에 대한 별도의 보호 조항을 갖는 것이 좋은 생각이라고는 생각지 않습니다. 예외없이 내 단위에서 예외가 발생한다는 것을 주장 할 수 있기를 바랍니다.

[ExpectedException(typeof(Exception))]을 사용하면 예외 유형이 예외에서 상속되어야한다는 오류가 발생합니다. 예외가 던져지지 않으면 Assert.Fail이있는 try/catch 블록입니다. 더 나은/깨끗한 방법이 있습니까?

답변

1

일반적인 예외가 발생했다고 주장하는 유일한 방법은 try-catching 인 것 같습니다. 난 아직도 일반적인 예외 상황에 주장의 필요성에 의문을 제기 할

http://social.msdn.microsoft.com/Forums/en/vststest/thread/ed891a27-272c-4938-9a93-719c149d820e

: 다음은이 주제에 대한 MSDN의 스레드입니다. 특정 시나리오를 테스트하는 경우 어떤 예외를 throw해야 하는지를 알아야합니다. string.IsNullOrEmpty()을 사용하는 예에서는 빈 문자열과 null 값에 대한 테스트가 필요합니다. 빈 문자열이 잘못된 입력 인 경우 ArgumentException을 던지는 것이 타당하며이 예외에 대해 테스트 할 수 있습니다. 문자열이 유효한 입력이면 예외를 throw하지 않는지 테스트 할 수 있습니다.

+0

나는 예외 예외를 잡는 것에 대한 장점을 볼 수 있다고 생각하는데,이 상황에서 나는 문자열 null (null 참조 예외?) 대 문자열 처리에 대한 감각이 없기 때문에 주로 관심이 많았다. argumentexception) 패러다임을 사용하고 예외 유형을 무시하고이 경우 예외가 throw되는지 확인하는 것이 좋을 것이라고 생각했습니다. 테스트를 덜 부서지기는하지만, 잘못된 이유로 실패 할 위험이 있습니다. 나는 다른 테스트가 '다른 이유'를 잡을 것이라고 생각했다. – Maslow

+0

잘못된 이유로 실패 할 수 있다면 테스트가 과민하지 않겠는가? 이 테스트는 확실히 '신뢰성이 떨어집니다'. – JChristian

관련 문제