SpringCloud Contracts的不同基类
如果合同之间的基类不同,则可以告诉Spring Cloud Contract插件自动生成的测试应扩展哪个类。您有两种选择:
- 遵循约定,提供
packageWithBaseClasses - 通过
baseClassMappings提供显式映射
按照惯例
约定是这样的:如果您在src/test/resources/contract/foo/bar/baz/下拥有合同,并且将packageWithBaseClasses属性的值设置为com.example.base,则Spring Cloud Contract验证程序会假设存在一个BarBazBase com.example.base包下的类。换句话说,系统将获取包的最后两个部分(如果存在),并形成一个后缀为Base的类。此规则优先于baseClassForTests。这是一个在contracts闭包中如何工作的示例:
packageWithBaseClasses = 'com.example.base'通过映射
您可以将合同包的正则表达式手动映射到匹配合同的基类的完全限定名称。您必须提供一个名为baseClassMappings的列表,该列表由baseClassMapping对象组成,这些对象采用从contractPackageRegex到baseClassFQN的映射。考虑以下示例:
baseClassForTests = "com.example.FooBase" baseClassMappings { baseClassMapping('.*/com/.*', 'com.example.ComBase') baseClassMapping('.*/bar/.*': 'com.example.BarBase') }
假设您的合同是-src/test/resources/contract/com/-src/test/resources/contract/foo/
通过提供baseClassForTests,我们可以在没有成功映射的情况下进行回退。(您也可以提供packageWithBaseClasses作为后备。)这样,从src/test/resources/contract/com/合约生成的测试扩展了com.example.ComBase,而其余测试扩展了com.example.FooBase。