所以我喜欢并享受在我参与的一个C++项目中使用Google Test。我现在正在启动一个将是纯C语言的库的新项目,到目前为止,我看不出为什么不能继续使用Google Test,即使它是一个C++框架。拥有可用的C++编译器将不会是一个问题。
是否有特定的原因,我不应该使用Google Test来测试纯C代码?
谢谢。
所以我喜欢并享受在我参与的一个C++项目中使用Google Test。我现在正在启动一个将是纯C语言的库的新项目,到目前为止,我看不出为什么不能继续使用Google Test,即使它是一个C++框架。拥有可用的C++编译器将不会是一个问题。
是否有特定的原因,我不应该使用Google Test来测试纯C代码?
谢谢。
在测试C语言代码时使用C++测试框架非常普遍,即使领先的相关书籍也采用这种方法。我过去经常使用googletest对C代码进行单元测试,并且可以推荐使用它。
我写了一篇博客文章,可能会有所帮助:http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/
我想再补充一点:由于gtest是C ++,因此您将以C ++解析要测试的C标头。这意味着测试不能保证头文件可从C中使用。我最近在构建C库时遇到了这个问题。
Jason,注意了!!! :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网站gmock_for_dummies.md 所以你将仅使用像expect_equal, expect_bigger_than这样的宏...
我想向您推荐工具CMocka(或其他C语言单元测试工具)。 它也来自谷歌(由非谷歌开发人员组成的团队进行修改),并且专门为C语言而创建。 当我想要测试C类型源代码时,我使用这个。
希望这有所帮助.. :-)祝你有一个美好的一天.. :-)
我无法具体列举出一个。我猜可能有一些在“正常”的C语言中不存在的东西。例如,我认为TestCase是从某个类派生而来的。但是,在测试中,您可以测试任何您想要测试的内容,所以为什么不使用C语言呢?