javascript - Node JS - C++ 插件的测试策略

标签 javascript c++ node.js debugging tdd

我已经为 Node JS 编写了一两个原生 C++ 模块,但总是倾向于用 Javascript 为模块编写测试。这是一种有效的测试策略,还是有更好的方法来测试(也许还有调试) native 模块代码?

最佳答案

纯粹主义者可能会说这是“集成”测试,而不是“单元”测试。但我个人并不介意。实际上,由于您的模块从 JS 使用,因此测试这方面也很有意义,如果您的所有测试都以这种方式完成,那么您就可以真正彻底地测试 JS->C++ 调用。

所以我认为这是有效的策略。如果它也足够快(JS->C++ 测试套件开销不到 1 秒),我会继续使用它。

如果 JS 测试套件很慢,我会重新考虑它,并添加带有一些 C++ 框架的纯 C++ 单元测试(调用模块公共(public) API 的 C++ 部分)。

(我个人尝试了 https://github.com/unittest-cpp/unittest-cpp 作为第一个,并坚持使用它,因为我喜欢它的语法和“复杂性”,构建速度快,没​​有依赖性,当我处于“暖”模式时,一切都很好以前编译,做小的 C++ 更改和重新运行测试通常需要大约 0.5 秒的时间来编译 + 运行(~数百个简单测试)+ 显示结果。

如果你这样做,你仍然应该在 JS 端进行一些集成测试,以验证模块在从 JS 调用时也能正常工作,而不仅仅是在 C++ 中。

如果您询问如何从 JS 中单独编译和运行纯 C++:取决于您的环境设置,我使用单独的 IDE 来处理 C++ 源代码。当然,这也让我可以在本地调试 C++。

关于javascript - Node JS - C++ 插件的测试策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695671/

相关文章:

c++ - 调用CreateFile打开串口 "comX"时如何设置限制时间?

javascript - 有没有为旧版本实现新的 Javascript/Ecmascript 5 方法的库?

javascript - Jquery 拖动调整大小选择

javascript - 在 VS Code 中使用 Code Runner 运行 JavaScript 时出现“无法识别 "' 节点”错误

c++ - 可以将 "using std::swap;"放在 header 中吗?

C++重新格式化文件在到达结束之前中止

arrays - Node.js promise : Push to array asynchronously & save

javascript - 如何将我的 node.js 文件合并到 postman 请求中?

node.js - 如何卸载 Handlebars ?

javascript - 匹配 JavaScript 代码中注释字符串之间的文本