Unit testing CPPFUnit用于单元测试可执行文件还是ELF?

Unit testing CPPFUnit用于单元测试可执行文件还是ELF?,unit-testing,executable,elf,cppunit,Unit Testing,Executable,Elf,Cppunit,我在以前的项目中只使用过UnitTest++。但我从未不幸地测试过可执行文件/ELF。我记得stackoverflow上有人发布了一些关于CPPFUnit的信息,但已经记不得了 我的问题 我想使用CppUnit测试.exe和ELFs。单元测试是我认为的解决方案 我认为有帮助的 …我不知道…我只是在我的生活中没有做过任何.exe/ELF单元测试。我以前做过敏捷的事情,但这是一个全新的游戏。如果有人在这方面有经验,我将不胜感激 CppUnit是用于自动单元测试的框架,而不是自动系统测试 系统测试正是

我在以前的项目中只使用过UnitTest++。但我从未不幸地测试过可执行文件/ELF。我记得stackoverflow上有人发布了一些关于CPPFUnit的信息,但已经记不得了

我的问题

我想使用CppUnit测试.exe和ELFs。单元测试是我认为的解决方案

我认为有帮助的


…我不知道…我只是在我的生活中没有做过任何.exe/ELF单元测试。我以前做过敏捷的事情,但这是一个全新的游戏。如果有人在这方面有经验,我将不胜感激

CppUnit是用于自动单元测试的框架,而不是自动系统测试

系统测试正是它的名字所暗示的。从用户的角度来看,它是关于将所有代码模块作为一个完整的系统一起测试的。自动化系统测试是指您通过测试工具对整个系统进行测试,为其提供特定的用户输入,并测试行为和输出是否按预期运行

单元测试就是从代码的角度来测试最小的代码单元,为它提供进入条件并断言退出条件得到了正确的满足。在最好的情况下,一个单元测试应该在一个类的公共接口上通过一个方法执行一条路径,而不依赖于数据库或服务等难以提供的资源。单元测试是一种开发人员工具,用于测试模块是否完全按照预期方式完成所有工作。这是一种非常详细的测试方法,并不是从可执行的角度考虑的


尽管如此,您打算用CppUnit测试的代码仍然需要链接才能执行。我们所做的是在一个项目中编写生产代码,在另一个项目中编写测试代码。当我们构建时,生产代码项目首先构建,将生产.CPP文件编译成.OBJ文件,然后将它们链接到PROD.DLL或PROD.EXE(无论项目打算生成什么)。接下来,我们构建测试项目,将test.CPP文件编译成.OBJ文件。然后,测试项目将test.OBJ文件与之前编译的生产.OBJ文件链接到test.EXE中。通过这种方式,我们的测试与用于创建实际生产代码的相同.OBJ文件相链接。然后,我们执行TEST.EXE并确保在构建完成之前测试不会显示任何错误

@johnders
我的一些客户数据以.EXE、.OBJ和ELF格式出现问题。我需要将它们与我的内部模块联系起来,并完成最终产品的集成。目前,我还没有记录/确定测试这些客户数据的方法。这就是为什么我贴出这个问题。你告诉我的是我已经做过的事!关键问题是我们无法访问源代码。这就是为什么它更具挑战性。我希望你能解决这个问题@hagubear,我假设他们的代码构成了一个API,您的代码必须与之集成,并且您希望确保他们能够遵守合同。您可以用测试自己的代码的相同方法使用CppUnit来完成此操作。编写一个测试用例来调用它们的API,并断言它们的结果。将测试代码与其.OBJ文件链接,生成test.EXE。如果它们有隐藏的依赖项,您将遇到问题,因为您必须知道如何在测试开始时设置这些依赖项。您将使用白盒工具进行黑盒测试,但它仍然可以工作。