如何使用Make實現簡單的迴歸測試框架? (我使用了GNU make,如果該事項。)執行`make check`或`make test`
我現在的makefile文件看起來像這樣(編輯爲簡單起見):
OBJS = jscheme.o utility.o model.o read.o eval.o print.o
%.o : %.c jscheme.h
gcc -c -o [email protected] $<
jscheme : $(OBJS)
gcc -o [email protected] $(OBJS)
.PHONY : clean
clean :
-rm -f jscheme $(OBJS)
我想有一套迴歸測試,例如,expr.in
測試「好」表達式& unrecognized.in
測試「壞」一個,其中expr.cmp
& unrecognized.cmp
是每個的預期輸出。手動測試是這樣的:
$ jscheme <expr.in> expr.out 2>&1
$ jscheme <unrecognized.in> unrecognized.out 2>&1
$ diff -q expr.out expr.cmp # identical
$ diff -q unrecognized.out unrecognized.cmp
Files unrecognized.out and unrecognized.cmp differ
我認爲一組規則添加到Makefile看起來像這樣:
TESTS = expr.test unrecognized.test
.PHONY test $(TESTS)
test : $(TESTS)
%.test : jscheme %.in %.cmp
jscheme <[something.in]> [something.out] 2>&1
diff -q [something.out] [something.cmp]
我的問題:
•我把什麼的[東西]佔位符?
•是否有方法將消息從diff
替換爲消息說「測試expr
失敗」?
從哪裏來的所有臨時文件? – reinierpost 2011-02-08 08:47:08
@reinierpost有什麼問題:如果你有更好的方式來進行這些比較,通過一切手段發佈一個包含它們的答案 - 這正是我所要求的那種幫助。 – 2011-02-08 15:01:55
對不起,我以爲我取消了這個問題。你確實需要臨時文件。 – reinierpost 2011-02-08 15:26:14