【发布时间】:2011-01-20 10:59:08
【问题描述】:
Rspec ruby/rails 是特定的吗?是否可以作为C/C++程序的测试框架使用?
【问题讨论】:
标签: c++ ruby automated-tests rspec test-framework
Rspec ruby/rails 是特定的吗?是否可以作为C/C++程序的测试框架使用?
【问题讨论】:
标签: c++ ruby automated-tests rspec test-framework
Rspec 的描述说:
RSpec 是用于 Ruby 的原始行为驱动开发框架。
我认为这意味着这个工具是特定于 Ruby 的。对于 c++,您可以使用 Boost Test Library 或其他工具。
【讨论】:
我认为 RSpec 不适用于 C++,但你应该看看这个理解:http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle
根据我的经验:您可以使用 CppUnit,但它有点痛苦。每个测试都有很多开销(开销意味着代码行),因此添加测试变得很烦人。 CppTest 看起来好一点,cxxtest 看起来确实不错,虽然我自己没有用过最后两个。
【讨论】:
我知道我正在复活一个古老的问题......但我在搜索 rspec 和 c++ 时从谷歌获得了这个链接。
Google 自己构建了一个名为 GoogleTest 的(非常简单易用的)测试套件,它基于 xUnit 并设计为跨平台。
他们还有一个名为 GoogleMock 的模拟框架。
我刚看到ccspec,看起来很有前途。
https://github.com/zhangsu/ccspec
基本上使用 C++11 构造来制作类似于 rspec 的内容。如果您正在寻找像 BDD 工具这样的 rspec,它看起来很符合要求。看看下面这个网站的例子:
class Student {
public:
bool hasPapers() const {
return true;
}
string status() const {
return "alumni";
}
};
auto student_spec = describe("Student", [] {
Student subject;
it("has published papers", [subject] {
expect(subject.hasPapers()).to(be_truthy);
});
it("is alumni", [subject] {
expect(subject.status()).to(eq("alumni"));
});
});
这里有人试过吗?我不确定它是否具有类似模拟功能的 rspec,但看起来您可以利用 gmock 进行一些模拟。 rspec 的功能并不完全有功能,但可能与 C++11 中的功能一样接近
【讨论】:
当我开始重新开始 C/C++ 开发并开始寻找类似于 RSpec 或 MiniTest for Ruby 和 JUnit for Java 时,我也在想同样的事情。
http://sodabrew.com/2012/04/writing-c-unit-tests-in-ruby.html
此链接显示的是如何使用 FFI gem 将您的 C/C++ 对象文件加载到 Ruby 中,并几乎像调用本机 Ruby 函数一样调用它。你可能会觉得它很漂亮。
【讨论】: