【发布时间】:2012-06-20 09:42:03
【问题描述】:
当你在修补时,例如Make、ant 或任何其他构建工具,您实际上是在编写代码。
为什么没有“MUnit”或“ANTUnit”来测试这些代码?这样做是有道理的,因为项目构建系统中的任何错误都会给使用它的人带来巨大的延迟和挫败感。
一个例子(注意:这可能根本行不通 - 未经测试,这也不是我的重点):
#makefile v0
all: main.out
main.out: main.o x.o y.o
g++ $^ -o main.out
%.o: %.cpp
g++ -Wall $?
但现在我希望我的目标文件在一个单独的构建文件夹中:
#makefile v1
all: main.out
main.out: $(addprefix build/,main.o x.o y.o)
g++ $^ -o main.out
build/%o: %.cpp
g++ Wall $< -o $@
哦,是的!这样可行!犯罪!提交!
(但是...持续集成服务器还没有“构建”文件夹...)
哦不……团队的构建失败了……我的错……愚蠢!
如果能够指定一个模拟项目、一个模拟文件夹结构,然后调用make all,并验证 main.out 是否存在(并且可以运行),那就太好了
那么问题来了:
我有哪些选项可以对我的 make 脚本进行“单元测试”?我注定要编写大量的 test-shell-scripts,还是已经存在某些东西?
【问题讨论】:
-
您能否发布一个您的 makefile 的示例并清楚地识别其中的单独单元?
-
我曾经追过的一些最严重的错误出现在 Make build scripts 中。我完全同意围绕 Make 需要更好的测试工具。我个人希望让 Make 在错误时“中断”;给我一个提示,让我看看当前的堆栈、变量等;并在出现问题时进行实时调试。
标签: unit-testing ant makefile build-system