JSL 애플리케이션에 대한 단위 테스트는 JSL-Unit GUI 드라이버 스크립트(예: RunJSL_Unit.jsl)와 단위 테스트 스크립트 및 테이블 세트를 사용하여 수행할 수 있습니다. 단위 테스트 스크립트와 테이블은 테스트 디렉터리(또는 해당 하위 디렉터리 중 하나)에 접두사 test가 붙은 JSL 및 JMP 파일입니다(예: test geographic 평균.jsl). 드라이버는 각 단위 테스트가 각 테스트 사례에 대해 호출해야 하는 ut Assert 함수를 정의합니다. ut 주장의 프로토타입은 다음과 같습니다:
ut assert(expression, expectedvalue <,stresscase="N">)
첫 번째 인수는 평가 시 테스트 사례의 실제 값으로 평가되는 표현식이고 두 번째 인수는 테스트 사례의 예상 값입니다. 표현식과 예상값은 필수 인수이지만 스트레스 케이스는 선택사항이며 기본값은 N입니다. 스트레스 사례 인수는 드문 이벤트로 간주될 수 있고 실패를 초래할 가능성이 높으므로 일반적인 테스트 실행에서 우회될 수 있는 테스트 사례를 위한 것입니다.
참고: GUI 드라이버는 선택 시 스트레스 테스트 사례를 포함하는 확인란을 제공합니다.
수치 테스트 결과는 엡실론을 사용하여 비교되어 허용 가능한 변동(예: 퍼지 비교)을 나타냅니다. 두 개의 엡실론 값이 있으며, 예상 결과가 0일 때 절대 엡실론이 사용되고 다른 모든 경우에는 상대 엡실론이 사용됩니다. 엡실론 값은 각 테스트 스크립트를 실행하기 전에 기본값으로 재설정되며, 이는 원하는 경우 테스트 스크립트가 덮어쓸 수 있는 전역 변수입니다.
ut zero epsilon = 1e-12; // close enough when expected is 0
ut relative epsilon = 1e-9; // close enough relative to expected value
실행 세부 정보가 로그에 기록됩니다. 실패의 경우 실제 결과와 예상 결과, 그리고 LRE(수치 테스트에만 해당)가 보고됩니다. LRE는 상대 오차(예: -log10(abs(q - c)/abs(c))의 로그(밑 10)를 나타내는 약어입니다.
참고: 다음과 같은 ut Assert 변형도 있습니다. ut 숫자를 주장 특정 자릿수의 정확도를 테스트하기 위해 즉석에서 엡실론을 설정하려는 경우입니다. 필요한 정확도 자릿수인 세 번째 인수를 추가합니다. 이는 예상 값이 특정 자릿수에만 제공되는 경우 특히 유용합니다. 예를 들어,
ut assert digits(Expr(Sqrt(2)), 1.414, 4); // is sqrt(2) accurate to 4 digits
ut assert digits(Expr(Pi()), 3.14159, 6); // is pi() accurate to 6 digits
ut Assert digits는 또한 강세 사례 인수를 네 번째 선택적 인수로 제공합니다. 테스트 데이터 테이블의 경우 엡실론 값은 테이블 변수로 저장되어야 하며 통과/실패 결과를 계산하는 데 사용되어야 합니다.
이것은 5000줄 이상의 JSL 스크립트를 디버깅하기 위해 제가 찾고 있던 것과 같습니다. 그것을 시험해 보게 되어 기쁘다.감사합니다!