Is Rspec ruby/rails specific? Is it possible to use it as a test framework for C/C++ program?
5 回答
我知道我正在复活一个古老的问题......但是在搜索 rspec 和 c++ 时,我从谷歌获得了这个链接。
Google 自己构建了一个(非常简单易用的)测试套件,称为GoogleTest,它基于 xUnit 并设计为跨平台。
他们还有一个名为GoogleMock的模拟框架。
我不认为 RSpec 适用于 C++,但你应该看看这个理解: http: //gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle
根据我的经验:您可以使用 CppUnit,但它有点痛苦。每个测试都有很多开销(开销意味着代码行),因此添加测试变得很烦人。CppTest 看起来好一点,而 cxxtest 看起来确实不错,虽然我自己没有使用过最后两个。
我刚看到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 函数一样调用它。你可能会觉得它很漂亮。