2012-06-20 51 views
3

当你修补如制作,或蚂蚁,或任何其他构建工具,你实际上是在编写代码。如何构建系统进行单元测试?

为什么没有'MUnit'或'ANTUnit'来测试这些代码段?这样做很有意义,因为项目构建系统中的任何错误都会给使用它的人造成巨大的延迟和挫折。

一个例子(注:这将可能甚至没有工作 - 未经检验的,这不是我的重点不是在这里,):

#makefile v0 
all: main.out 

main.out: main.o x.o y.o 
    g++ $^ -o main.out 

%.o: %.cpp 
    g++ -Wall $? 

但现在我想在一个单独的build文件夹我的目标文件:

#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 [email protected] 

哦,是的!这样可行!承诺!承诺!

(但是......持续集成服务器没有“构建”文件夹尚未...)

哦NOOOO ...团队的构建失败......我的错......笨!

这将是巨大的,可以指定一个模拟项目,一个模拟的文件夹结构,然后调用make all,并验证main.out是存在的(可以运行)

所以这里的问题:

我的选择是“单元测试”我的make脚本?我注定要写一个gazillion测试shell脚本,还是已经存在一些东西?

+0

你可以发布一个你的makefile的例子,并清楚地标识其中的单独单元吗? –

+0

我曾经追过的一些最糟糕的错误是Make Make脚本。我完全同意,Make需要更好的测试工具。我个人希望在错误上做一个'休息';给我一个提示,让我看看当前的堆栈,变量等;并在出现问题时进行实时调试。 –

回答

3

如果您使用Ant,那么有AntUnit。我使用它,它的工作原理。

我不知道,也找不到Make的单元测试框架。你可以考虑创建你自己的。