【发布时间】:2008-10-11 11:08:54
【问题描述】:
我喜欢 Ruby RSpec BDD 开发风格。有没有用 C/C++ 做这件事的好工具?
【问题讨论】:
-
这个问题是关于 C 还是关于 C++? C/C++ 只是纯粹的模棱两可。
-
我很惊讶没有提到cucumber-cpp,它是一个活跃的框架并使用 Gherkin 语法来编写场景。它还有一组非常简洁的选项可以满足许多需求。
我喜欢 Ruby RSpec BDD 开发风格。有没有用 C/C++ 做这件事的好工具?
【问题讨论】:
cspec 用于 C。大概它可以与 C++ 一起使用。 Behavior Driven Development Wikipedia page 上有各种语言的工具列表。
【讨论】:
看来您可以使用 Ruby 和 RSpec 测试您的 C 代码,使用 swig 生成包装器!在这里查看 Ben Mabey 的帖子: http://benmabey.com/2007/09/09/bdd-your-c.html
我已经尝试过这个例子,它对我有用。不知道有没有人更进一步。
【讨论】:
原始链接 (CppSpec) 已失效,但仍可通过Internet ArchiveCppSpec 访问。
正如@VickyChijwani 已经提到的,在Github - tpuronen/cppspec 有一个项目的副本
【讨论】:
Igloo 是我期待尝试一段时间的一个
【讨论】:
由于请求了类似 RSpec 的框架,我想添加最近的igloo。 虽然最初针对的是 Context/Spec 语法,但它也支持 Describe/It 语法。像在那些基于 C 的框架中那样设置测试运行器和测试装置并没有太多噪音。它甚至比 CppSpec 看起来更好看。他们通过使用体面的模板机制来实现这一点。
【讨论】:
试试CBehave!它是一个使用 given/when/then 宏的类似 RSpec 的 BDD 框架。示例:
FEATURE(1, "strstr")
SCENARIO("The strstr finds the first occurrence of the substring in the source string")
GIVEN("A source string: [Lionel Messi is a great football player]")
char *str = "Lionel Messi is a great football player";
GIVEN_END
WHEN("we use strstr to find the first occurrence of [football]")
char *p = strstr(str, "football");
WHEN_END
THEN("We should get the string: [football player]")
SHOULD_STR_EQUAL(p, "football player");
THEN_END
SCENARIO_END
FEATURE_END
【讨论】: