我想利用一些脚本语言来执行C ++代码的单元测试。使用脚本语言开发测试可能更容易,因为它可以访问所需的C ++函数。
我有Ruby或Perl(因为我熟悉它们)。似乎我可以使用SWIG来连接C ++代码。
SWIG有更好的替代方案吗?你个人会用什么脚本语言来实现这个目的?
最后,使用这种方法进行测试是否合适(并且有效)?
答案 0 :(得分:3)
Inline:CPP提供了一种从Perl调用C ++代码的相对简单的方法。
我建议使用以下命令运行脚本(或使用测试脚本中的等效指令):
perl -MInline=FORCE,NOISY,NOCLEAN test.pl
答案 1 :(得分:2)
如果要以与测试Perl代码类似的方式测试C ++代码,可以使用设计用于输出TAP的库。
查看page listing the TAP producers似乎有only one designed specifically for C++。
您可能还想查看GitHub page for libtap++。
#include <tap++.h>
#include <string>
using namespace TAP;
int foo() {
return 1;
}
std::string bar() {
return "a string";
}
int main() {
plan(3);
ok(true, "This test passes");
is(foo(), 1, "foo() should be 1");
is(bar(), "a string", "bar() should be \"a string\"");
return exit_status();
}
产生类似的东西:
1..3 ok 1 - This test passes ok 2 - foo() should be 1 ok 3 - bar() should be "a string"
可由prove提供的Test::Harness解析。
最好的部分是你不应该学习你已经使用的语言以外的其他语言。
答案 2 :(得分:1)
如果您正在编写C代码并使用C ++编译器进行编译,则可以使用其他语言进行测试。
但不适用于以C ++风格编写的代码。
如何测试正确且无泄漏的复制构造,分配,重载运算符?模板怎么样?没有脚本语言会以与C ++相同的方式调用它们,许多人甚至没有传递值的概念。
从您最终将用于使用代码的环境进行测试。