【发布时间】:2011-06-23 02:19:15
【问题描述】:
如何使用 Make 实现一个简单的回归测试框架? (如果这很重要,我正在使用 GNU Make。)
我当前的 makefile 看起来像这样(为简单起见进行了编辑):
OBJS = jscheme.o utility.o model.o read.o eval.o print.o
%.o : %.c jscheme.h
gcc -c -o $@ $<
jscheme : $(OBJS)
gcc -o $@ $(OBJS)
.PHONY : clean
clean :
-rm -f jscheme $(OBJS)
我想要一组回归测试,例如,expr.in 测试一个“好”的表达式和unrecognized.in 测试一个“坏”的表达式,expr.cmp & @ 987654325@ 是每个的预期输出。手动测试如下所示:
$ 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]
我的问题:
• 我在 [something] 占位符中放了什么?
• 有没有办法将来自diff 的消息替换为“测试expr 失败”的消息?
【问题讨论】:
-
从哪里来的所有临时文件?有什么问题
-
@reinierpost:如果您有更好的方法来进行这些比较,请务必发布包含它们的答案 - 这正是我所要求的那种帮助.
-
抱歉,我以为我取消了那个问题。你确实需要临时文件。
标签: testing makefile gnu-make regression-testing