消费者驱动的C ++ API合同测试

时间:2019-04-23 22:23:54

标签: c++ api testing pact contract

我正在开发一个具有某些Public API的静态C ++库。 我必须为该库提供的API实现消费者驱动的合同。 但就我而言,我必须将合同提供给将要达成共识的消费者。

实施基于合同的测试的灵感来自PACT(https://docs.pact.io/)。 PACT中的合同采用JSON文件形式,主要基于REST和http响应。

如果我必须对C ++ API实施基于合同的测试。那么最好的方法是什么。我可以看到Boost具有“按合同设计”功能,但它更像是断言,但在PACT这样的文件中没有定义合同。 (https://www.boost.org/doc/libs/develop/libs/contract/doc/html/index.html

是否可以通过任何方式在文件中定义合同并可以测试所有API。这样做的主要目的是进行隔离测试。

请您分享一些输入信息以实施文件中定义的合同,并为这些合同编写测试程序。

1 个答案:

答案 0 :(得分:1)

  

我必须为库提供的API实施消费者驱动的合同。   但就我而言,我必须将合同提供给将要达成共识的消费者。

这两个语句彼此不兼容。根据合同的性质向消费者提供合同 不能由消费者决定。

无论如何,如果您想确保双方都生成并验证了合同,则Pact当前不支持C ++,但这并不意味着您不能使用它。

请参阅以下链接,以使用Pact工具测试消费者和提供方:

如果您正在执行提供商驱动的合同,并且不希望知道消费者本身是否兼容,则可以考虑使用Swagger(OpenAPI Spec)之类的方法来定义API,然后使用Dredd之类的工具来查看其是否匹配