Googletesting是否可以testingC代码?

所以我喜欢并且喜欢使用Google Test来参与一个我参与的C ++项目。我只是提出一个新的项目,这个项目将是直线C(一个库),到目前为止看不到任何理由不要继续使用Google Test,尽pipe它是一个C ++框架。 有一个C ++编译器可用不会是一个问题。

是否有具体的原因,我不应该使用谷歌testing直接testingC代码?

谢谢。

使用C ++testing框架来testingC代码是相当常见的,即使是关于这个主题的主要书籍也遵循这种方法。 我过去广泛使用过googletest来unit testingC代码,并可以推荐它。

我写了一篇关于它的博客文章,可能有用: http : //meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/

与所有Google的C ++代码一样,Google Test不会使用exception,所以exception安全stream程不会成为问题。 只要你的头文件是C ++兼容的(不使用C ++关键字,导出正确的链接符号),应该没问题。

我无法命名一个。 我想会有一些东西,你没有在“正常”CEg我认为TestCase是从一个特定的类派生。 但在testing中,你可以testing你喜欢什么,为什么不C?

杰森,请注意! :d

正如Meekrosoft所说,是的,这是可能的。 当我试图这样做的时候,我也使用了他的网站。 它工作,但有一个大问题:

GTest是反对导向的工具和C语言不是!

例如,在GTest中,有很多以请求对象为参数的函数(整个API的80%),例如:

EXPECT_CALL(turtle, PenDown()) // turtle is object(class) and PenDown() is method of that object .Times(AtLeast(1)); 

从GTest网站https://code.google.com/p/googlemock/wiki/ForDummies,因此您将只使用像expect_equal,expect_bigger_than等macros

我想build议你的工具CMocka (或其他一些Cunit testing工具)。 它也是来自谷歌(由非谷歌开发人员组修改),它是直接为C语言创build的。 当我想testingC型源代码时,我使用这个。

我希望这有助于.. :-)有一个愉快的一天.. 🙂

我只是想再补充一点:因为gtest是C ++,所以你将在C ++下parsing你的C头文件。 这意味着testing并不能保证头文件可以从C中使用。我最近用一个C库build立了它。