当您在修补 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 脚本?我注定要编写大量的测试外壳脚本,还是已经存在某些东西?