SpringCloud 合同的不同基類

2023-12-08 17:45 更新

如果合同之間的基類不同,則可以告訴Spring Cloud Contract插件自動(dòng)生成的測(cè)試應(yīng)擴(kuò)展哪個(gè)類。您有兩種選擇:

  • 遵循約定,提供packageWithBaseClasses
  • 通過(guò)baseClassMappings提供顯式映射

按照慣例

約定是這樣的:如果您在src/test/resources/contract/foo/bar/baz/下?lián)碛泻贤⑶覍?code class="literal" i="3811">packageWithBaseClasses屬性的值設(shè)置為com.example.base,則Spring Cloud Contract驗(yàn)證者會(huì)假設(shè)存在一個(gè)BarBazBase類(位于com.example.base包中)。 換句話說(shuō),系統(tǒng)將獲取包的最后兩個(gè)部分(如果存在的話),并形成一個(gè)帶有Base后綴的類。此規(guī)則優(yōu)先于baseClassForTests。這是一個(gè)在contracts閉包中如何工作的示例:

<plugin>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-contract-maven-plugin</artifactId>
	<configuration>
		<packageWithBaseClasses>hello</packageWithBaseClasses>
	</configuration>
</plugin>

通過(guò)映射

您可以將合同包的正則表達(dá)式手動(dòng)映射到匹配合同的基類的完全限定名稱。您必須提供一個(gè)名為baseClassMappings的列表,該列表由baseClassMapping對(duì)象組成,這些對(duì)象采用從contractPackageRegexbaseClassFQN的映射。 考慮以下示例:

<plugin>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-contract-maven-plugin</artifactId>
	<configuration>
		<baseClassForTests>com.example.FooBase</baseClassForTests>
		<baseClassMappings>
			<baseClassMapping>
				<contractPackageRegex>.*com.*</contractPackageRegex>
				<baseClassFQN>com.example.TestBase</baseClassFQN>
			</baseClassMapping>
		</baseClassMappings>
	</configuration>
</plugin>

假設(shè)您在以下兩個(gè)位置擁有合同:* src/test/resources/contract/com/ * src/test/resources/contract/foo/

通過(guò)提供baseClassForTests,我們可以進(jìn)行后備,以防映射未成功。(您也可以提供packageWithBaseClasses作為后備。)這樣,從src/test/resources/contract/com/合約生成的測(cè)試擴(kuò)展了com.example.ComBase,而其余測(cè)試擴(kuò)展了com.example.FooBase。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)