如何使用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