gpt4 book ai didi

c - 如何对 C 代码的托管包装器进行单元测试?

转载 作者:太空狗 更新时间:2023-10-29 15:07:34 25 4
gpt4 key购买 nike

我将围绕一些 C 函数创建一个托管 C++ 包装器,以允许它在其他 .NET 解决方案中使用。我正在考虑提供一个非常简约的包装器,例如:

C header 中的签名:

void DOSTH(const char*, short, long*);

暴露的托管接口(interface):

public void doSomething(String^ input, short param, [Out] long^ %result);

为此,我的解决方案将具有 C header 并将引用包含我正在构建的已编译 C API 的 .dll。

作为 Visual Studio 新手,我不确定如何对此进行单元测试。是否可以模拟 .dll 以提供模拟实现?有没有一个图书馆可以使这种任务变得容易?是否有一个特定的解决方案结构我应该旨在使这更容易?

这方面的任何指导都会很棒。 Google 搜索让我想要了解有关对托管包装器进行单元测试的更多信息。

最佳答案

在某些情况下(我想到工具限制和/或依赖复杂性),使用外部框架模拟依赖是不可能的。然后,就有了完全合法的手动编写模拟的技术(我认为这是在模拟框架流行之前做事的方式)。

这基本上就是您想要做的 - 伪造依赖性,在您的情况下恰好是 C 库。框架帮不上忙 - 您可能想尝试手动方法。

创建一些简单的、伪造的实现(很像一个 stub ,例如只返回固定值而不考虑输入参数——自然地,可能比那更复杂),编译它,让它暴露完全相同的头文件/函数和在您的测试项目中引用它。这就是伪装( stub /模拟)背后的基本思想 - 一个对象假装是另一个对象。

虽然听起来很简单,但我实际上并没有尝试过 - 对此持保留态度,更多的是将其作为您可以采用的方法的建议。这种方法的局限性(除了它在技术上是否可行)是非常差/没有配置选项(因为额外的伪造 DLL 会像硬编码的 stub 一样工作 - 配置文件可能会有所帮助,但感觉就像... 工作太多?)。

关于c - 如何对 C 代码的托管包装器进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com