[插入语言]的测试框架

时间:2009-05-12 04:33:13

标签: unit-testing testing fitnesse fitnesse-slim dataflex

我正在寻找一个测试框架来为a language without much test support引入自动化测试。据我所知,我需要一个能够使用某种形式的协议运行VDF测试的框架。我宁愿花时间编写测试而不是编写VDF代码来与测试框架接口,因此更喜欢轻量级协议。

Slim with Fitnesse似乎是一个不错的候选人,但我对所有推荐感兴趣。

能够在编程语言中使用相同的测试框架将是一个额外的好处。

1 个答案:

答案 0 :(得分:4)

这假设您正在使用API​​级别。如果我读错了,并且你在GUI级工作,那么你更容易考虑像selenium或watir这样的东西。

您是否考虑过编写自己的简单测试框架来输出TAP结果(测试任何协议) - 然后用grind或TAP2HTML解析它?

说真的,TAP输出如下所示:

1..7
ok 1 - hello world with null value returns 'hello world' string
ok 2 - hello world with bob returns 'hello, bob'
ok 3 - hello world with 123 return 'hello, 123'
ok 4 - hello world with 5K string return hello plus string
ok 5 - special characters
ok 6 - internationalization, fr
ok 7 - internationalization, ja
Looks like you failed 0 tests of 7.

(如果它在第5步之后死亡,1..7会告诉你一些错误的信息)

输出为直ASCII。你基本上有两个全局变量,numTestsTotal和numTestExecuted,并写这样的函数:

sub ok (boolean bExpected, string comment) {
  if (bExpected) {
    print "ok " . numTestsExecuted . " "  . comment . "\n";    
  }else {
    print "not ok" . numTeststotal . " " . comment . "\n";
  }
  numTestsExecuted++;
}


sub eq(int iExpected, int iResult, string comment) {
  if (iExpected==iResult) {
     print "ok " . numTestsExecuted . " " . comment . "\n";
  } else {
     print "not ok" . numTestsExecuted . " " . comment . \n";
  }
  numTestsExecuted++;
}

您在库中编写常规代码,然后您的测试应用程序包含库和测试模块。

您可以为每种类型的值重载eq,而write则用于比较数组等。

请参阅TAP文档: http://testanything.org/wiki/index.php/Main_Page

Test::More

是的,你可以说eq()应该“只”调用ok()。或者您可以在输出中插入预期和实际结果。由你决定。

无论如何,对于更多命令式语言,有许多TAP解析器和解释器。