2012-11-10 2 views
0

필자는 쓰기 파일을 잘 작성하지 않았습니다. 하지만 GNUMAKE 기반 테스트 하네스를 작성할 필요가 있습니다. 나는 약간의 연구를했지만 유용한 것을 찾을 수 없었다. 그래서 어디서부터 시작해야할지 모르겠습니다.GNUMAKE 기반 testharness 작성하는 방법

다음
TEST_SUITE_DIR:=testSuite 

#Get all test names with path & extention 
TEST_SCRIPTS_WITH_PATH:=$(wildcard $(TEST_SUITE_DIR)/*.txt) 

#Test name with out path and extention 
TEST_SCRIPT_NAME:=$(notdir $(patsubst %.txt,%,$(TEST_SCRIPTS_WITH_PATH))) 


vpath %.txt $(TEST_SUITE_DIR) 


TEST_LOG_FILE:=$(TEST_SCRIPT_NAME)OutPutFile.txt 



#This is the program ./bin/programName being tested 
PUT:=man 

#Test requrements: 
#1) Each test in /testSuite dir should have its own logFile 
#2) Each testout will be checked against a goldenout file in /goldenOutput dir to see 
# if the expected resuls match with the test output 
# #3) If the test & golden output file hasnt been modified, we do not want to run that test so 
# we can save time 
# #4) STDERR should be redirected to a stderr.log 
#5) During the regression, if a test failed, test name should be written into the regressionReport.log 

.PHONY: clean test 

test: 
     for i in $(TEST_SCRIPTS_WITH_PATH); do \ 
       echo $$i; \ 
       $(PUT) `head -n 1 $$i` > $$iOutPutFile.txt; \ 
     done 

#$(foreach i, $(TEST_SCRIPTS_WITH_PATH), $(PUT) `head -n 1 $($i)` > $($i)OutPutFile.txt) 
#$(PUT) `head -n 1 $(TEST_SCRIPTS) ` > $(TEST_SCRIPTS)logFile.log 


clean: 
     rm -f *.d $(OBJ_DIR)/*.o $(PROG) 


-include *.d 

는, 나는 당신이 뭘 하려는지 이해가 확실하지 않다

date 

답변

0

, 내 dataFile.txt (나는 단지 한 명령이 작동 얻을 수있는 순간에 노력하고)있다 왜 테스트 규칙에 대한 종속성이 필요한가요? (특별히 당신이 가짜로 만든). 어떻게 할 방법을 알고 때까지 만들기로 아무것도 할 수 있도록 또한 당신이하지

0

Makefile을 테스트 당신이 사랑하는 사용할 필요가 파일의 내용을 테스트하려는 경우

은 특정 작업을 자동화하는 방법입니다 그것 없이는 메이크업.

원하는 작업을 수행하는 방법은 여러 가지가 있습니다 (Make의 일반적인 상황). 메이크 파일을 어떻게 확장하는지 생각해야합니다. 이 명령을 구성하는 가장 간단한 방법은 아마도 :

man `head -n 1 dataFile.txt` > logFile.log 

그래서이 makefile은 충분이에

.PHONY: all 

all: 
    man `head -n 1 dataFile.txt` > logFile.log 

많은 발전이 가능하지만 우리는이 이상 할 의도 무엇인지까지.

+0

1 회의 테스트를 수행했습니다. 하나 이상의 시험에 이것을 어떻게 사용합니까? 내 회귀가 내가 원하는 방식대로 작동하려면 몇 가지 요구 사항을 더 추가해야했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 당신이 말할 수 있듯이, 저는 C, C++ 프로그래머입니다. 이것은 나에게 그리스어 같다. – usustarr