【问题标题】:Use rspec to test C/C++ program使用 rspec 测试 C/C++ 程序
【发布时间】:2011-01-20 10:59:08
【问题描述】:

Rspec ruby​​/rails 是特定的吗?是否可以作为C/C++程序的测试框架使用?

【问题讨论】:

    标签: c++ ruby automated-tests rspec test-framework


    【解决方案1】:

    Rspec 的描述说:

    RSpec 是用于 Ruby 的原始行为驱动开发框架。

    我认为这意味着这个工具是特定于 Ruby 的。对于 c++,您可以使用 Boost Test Library 或其他工具。

    【讨论】:

    • 取决于你想用 rspec 做什么。我正在从事的项目中有一些人编写黄瓜功能并将它们转变为用 c++ 和 qt 编写的应用程序的实际测试套件。你还有一些额外的软件,但是 afaik,它仍然可行。
    • 看看我的回答,stackoverflow.com/a/41783609/2009612,我碰巧找到了一篇关于使用 Ruby 测试 C/C++ 的博客。
    【解决方案2】:

    我认为 RSpec 不适用于 C++,但你应该看看这个理解:http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungle

    根据我的经验:您可以使用 CppUnit,但它有点痛苦。每个测试都有很多开销(开销意味着代码行),因此添加测试变得很烦人。 CppTest 看起来好一点,cxxtest 看起来确实不错,虽然我自己没有用过最后两个。

    【讨论】:

      【解决方案3】:

      我知道我正在复活一个古老的问题......但我在搜索 rspec 和 c++ 时从谷歌获得了这个链接。

      Google 自己构建了一个名为 GoogleTest 的(非常简单易用的)测试套件,它基于 xUnit 并设计为跨平台。

      他们还有一个名为 GoogleMock 的模拟框架。

      【解决方案4】:

      我刚看到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 中的功能一样接近

      【讨论】:

        【解决方案5】:

        当我开始重新开始 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 函数一样调用它。你可能会觉得它很漂亮。

        【讨论】:

          猜你喜欢
          • 2018-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多