我想在 LLVM 的帮助下使用 C++ 中的自动单元测试生成方法。该方法应在对被测应用程序 (AUT) 进行动态分析期间自动获取特定对象的状态。记录数据后,我想编写测试。在这里,测试应该在执行被测方法/代码之前使用记录的测试数据重建对象作为设置。
对于对象状态,我指的是对象的所有成员变量值,包括对其他对象的引用(为此我还需要获取和重建整个对象状态)。但是,由于所有成员值都包括私有成员变量的值,所以我遇到了一个问题。据我所知,在 C++ 中无法访问私有成员变量。也就是说,除非所讨论的对象类型是任何“我的对象类型”的朋友,或者为其私有成员提供直接访问功能。
实际上,对于已经在 AUT 的源代码中声明的类型,我可以解决这个问题。在这里,我可以使用 LLVM 在编译期间使用必要的代码来检测类型。但是,我不能对 AUT 使用的预编译库中的引用类型执行此操作。
因此,我的问题是:您知道如何记录和重建我没有源代码的任意对象的完整状态吗?直接复制内存有帮助吗?
由于我的方法实际上是基本(自动)单元测试生成,我确信必须有办法在 C++ 中实现它。毕竟,这类生成器已经用 Java 和 C# 实现了。