Rspecルビー/レールは特定のものですか?C / C ++プログラムのテストフレームワークとして使用することは可能ですか?
5 に答える
私は古代の質問を復活させていることを知っています...しかし、rspecとc ++を検索すると、グーグルからこのリンクを取得します。
Google自体が、xUnitに基づいており、クロスプラットフォーム用に設計されたGoogleTestと呼ばれる(非常に使いやすい)テストスイートを構築しました。
また、GoogleMockと呼ばれるモックフレームワークもあります。
Rspecの説明によると:
RSpecは、Ruby用のオリジナルのBehaviorDrivenDevelopmentフレームワークです。
つまり、このツールはRuby固有のものだと思います。C ++の場合、BoostTestLibraryまたはその他のツールを使用できます。
RSpecがC++で機能するとは思いませんが、次の理解を確認する必要があります:http: //gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle
私の経験から:CppUnitを使用することはできますが、それはどういうわけか苦痛です。テストごとに多くのオーバーヘッドがあるため(オーバーヘッドはコードの行を意味します)、テストを追加するのは面倒になります。私は最後の2つを自分で使用していませんが、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、Ruby用のMiniTest、およびJava用のJUnitに似たものを探し始めたとき、私は同じことを考えていました。
http://sodabrew.com/2012/04/writing-c-unit-tests-in-ruby.html
このリンクが示すのは、FFIgemを使用してC/ C ++オブジェクトファイルをRubyにロードし、それをネイティブのRuby関数であるかのように呼び出す方法です。あなたはそれが気の利いたと思うかもしれません。