使用脚本语言进行C ++单元测试

时间:2011-03-18 15:44:58

标签: c++ ruby perl unit-testing scripting

我想利用一些脚本语言来执行C ++代码的单元测试。使用脚本语言开发测试可能更容易,因为它可以访问所需的C ++函数。

我有Ruby或Perl(因为我熟悉它们)。似乎我可以使用SWIG来连接C ++代码。

SWIG有更好的替代方案吗?你个人会用什么脚本语言来实现这个目的?

最后,使用这种方法进行测试是否合适(并且有效)?

3 个答案:

答案 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 ++相同的方式调用它们,许多人甚至没有传递值的概念。

从您最终将用于使用代码的环境进行测试。

相关问题