我需要一些建议来正确设置我编写的 C服务器应用程序的集成测试。主要问题是客户端库在它自己的项目中,那么最好的方法是什么?
我应该将客户端库作为 git 子模块(客户端和服务器都在 git 下)放在服务器的“测试”文件夹中并让测试链接到它吗?我应该实现一个最小的静态客户端(使用二进制字符串发送命令)并使用它吗?
因为这是我第一次真正需要集成测试,所以我有点怀疑这些方法中哪一种是最好的。
我需要一些建议来正确设置我编写的 C服务器应用程序的集成测试。主要问题是客户端库在它自己的项目中,那么最好的方法是什么?
我应该将客户端库作为 git 子模块(客户端和服务器都在 git 下)放在服务器的“测试”文件夹中并让测试链接到它吗?我应该实现一个最小的静态客户端(使用二进制字符串发送命令)并使用它吗?
因为这是我第一次真正需要集成测试,所以我有点怀疑这些方法中哪一种是最好的。
可以在此处找到集成测试的一个很好的定义。它指出:
集成测试:测试多个子系统的正确互操作。从测试两个类之间的集成到测试与生产环境的集成,有整个范围。
通常,您将为您的客户端进行集成测试,并为您的服务器进行单独的集成测试。但是,您指的是客户端-服务器集成测试。
要编写这类测试,我建议使用自动化验收测试。使用Cucumber之类的测试框架,您可以编写测试特定功能和场景的测试,这些测试将与客户端和服务器交互。
有一个名为cucumber-cpp的 C++ 黄瓜框架(我假设)您可以使用它来测试基于 C 的应用程序。还有一个视频(虽然很差!)在这里使用。
在我看来,客户端和服务器都应该有两个单独的测试套件。二进制字符串(这甚至可能吗?)听起来是个坏主意。尝试使测试套件可读,而不是使用任何“魔术数字”。
我不会仅仅因为测试套件而使用子模块解决方案。