2009-08-17 1 views
1

컴파일 된 코드가 예상 된 출력을 반환하는지 또는 예상대로 실패하는지 어떻게 테스트합니까?컴파일 된 코드를 테스트하여 예상 출력/오류를 반환하는 가장 좋은 방법

아래의 작업 예제를 해결했지만 쉽게 확장 할 수 없습니다. 모든 추가 테스트에는 추가 중첩 괄호가 필요합니다. 물론이 파일을 다른 파일로 나눌 수도 있지만이를 향상시키는 방법에 대한 제안이 있습니까? 또한 makefile의 make test stanza에서이 것을 사용할 계획이므로 다른 사람들이 기본적으로 설치되지 않은 것을 설치하려고하지는 않습니다. 단지 테스트를 위해서입니다. 그리고 stdout은 stderr와 인터리브되어 있어야합니다.

간단한 예 :

./testFoo || echo execution failed 

./testBar && echo expected failure 

(./testBaz && (./testBaz 2>&1 | cmp -s - foo.tst && (./testFoo && echo and so on 
    || echo testFoo's execution failed)|| echo testBaz's does not match ) 
    || echo testBaz's execution failed 

내 현재 테스터 (하나 개의 테스트 용)과 같습니다가 :

\#!/bin/bash 
compiler1 $1 && (compiler2 -E --make $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') && (./$(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') || echo execution failed) || less $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/').err) || echo compile failed 
+0

답변 해 주셔서 감사 드리며,이를 명심하십시오. 그 동안 munit이 makefile 테스트 프레임 워크를 찾았습니다. 원하는 프레임 워크가 있는지 확인합니다. – Jean

답변

1

은 여기 패턴을보고 시작하는 것이 좋습니다. 예를 들어 파일 이름을 패턴으로 사용하고 예상되는 결과를 인코딩하는 추가 파일을 만들 수 있습니다.

그런 다음 간단한 스크립트를 사용하여 명령을 실행하고 테스트 코드를 반복하여 반복하는 대신 결과를 확인할 수 있습니다.

예를 들어, 내용 0의 파일 testFoo.exectestBar.exec1 포함됩니다 동안 (0 또는 이상 수익을) 성공해야한다는 것을 의미합니다.

textBaz.out 다음 예상되는 출력을 포함합니다. testBaz를 여러 번 호출 할 필요가 없습니다. 첫 번째 호출에서 출력을 리디렉션 한 다음 $?에서 호출이 성공했는지 여부를 확인할 수 있습니다. 그렇다면 명령을 다시 시작하지 않고 출력을 직접 확인할 수 있습니다.

0

내 자신의 간단한 생각을 가진 테스트 환경은 다음과 같이 작동합니다 : 모든 테스트가 확장 .test와 bash는 스크립트에 의해 표현된다

  • -이 모두 같은 디렉토리 내가 만들

  • 에 살고 테스트를 실행하고 테스트 스크립트를 실행하여 결과를 확인한 후 good_results라는 디렉토리에 생성 된 테스트와 똑같은 이름의 파일로 보입니다.

  • 주 테스트 스크립트는 모든 .test 스크립트를 찾아서 차례대로 실행하여 임시 출력 파일을 생성합니다. 이것은 good_results 디렉토리에 일치하는 파일 diff'd하고 어떤 차이가

을보고 ITV이를 작성하고이 작업을 얻기 위해 나에게 30 분을했다, 그러나 그것은 귀중한 입증했다!

관련 문제