C# Language
코드 계약 및 주장
수색…
논리를 확인하는 어설 션은 항상 true이어야합니다.
어설 션은 입력 매개 변수 테스트를 수행하지 않고 프로그램 흐름이 핵심이라는 것을 확인하는 데 사용됩니다. 즉, 특정 시점에서 코드에 대한 특정 가정을 할 수 있습니다. 즉, Debug.Assert
수행 된 테스트는 항상 테스트 된 값이 true
라고 가정해야 true
.
Debug.Assert는 DEBUG 빌드에서만 실행됩니다. RELEASE 빌드에서 필터링됩니다. 단위 테스트뿐 아니라 코드 계약 또는 입력 유효성 검사 메소드의 대체가 아닌 디버깅 도구로 간주되어야합니다.
예를 들어, 이것은 좋은 주장입니다.
var systemData = RetrieveSystemConfiguration();
Debug.Assert(systemData != null);
여기에서는 RetrieveSystemConfiguration ()이 유효한 값을 반환하고 null을 반환하지 않는다고 가정 할 수 있으므로 assert는 좋은 선택입니다.
여기 또 다른 좋은 예가 있습니다.
UserData user = RetrieveUserData();
Debug.Assert(user != null);
Debug.Assert(user.Age > 0);
int year = DateTime.Today.Year - user.Age;
먼저 RetrieveUserData ()가 유효한 값을 반환한다고 가정합니다. 그런 다음 Age 속성을 사용하기 전에 사용자의 나이가 엄격하게 정당하다는 가정 (항상 사실이어야 함)을 확인합니다.
이것은 assert의 나쁜 예입니다.
string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Debug.Assert(age > 16);
Console.WriteLine("Great, you are over 16");
Assert는 입력 검증을위한 것이 아닙니다. 왜냐하면이 주장이 항상 참이라고 가정하는 것이 올바르지 않기 때문입니다. 이를 위해 입력 유효성 검증 메소드를 사용해야합니다. 위의 경우 입력 값이 첫 번째 숫자인지 확인해야합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow