SpringCloud 三秒游

2023-12-06 17:04 更新

這個(gè)非常簡短的導(dǎo)覽使用Spring Cloud Contract來完成:

  • 名為“在生產(chǎn)者端”的部分
  • “消費(fèi)者方面”一節(jié)

您可以在這里找到更長的行程 。

在生產(chǎn)者方面

要開始使用Spring Cloud Contract,請(qǐng)將具有REST/消息合同(以Groovy DSL或YAML表示)的文件添加到由contractsDslDir屬性設(shè)置的合同目錄中。默認(rèn)情況下為$rootDir/src/test/resources/contracts。

然后將Spring Cloud Contract Verifier依賴項(xiàng)和插件添加到您的構(gòu)建文件中,如以下示例所示:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-contract-verifier</artifactId>
	<scope>test</scope>
</dependency>

以下清單顯示了如何添加插件,該插件應(yīng)放在文件的build / plugins部分中:

<plugin>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-contract-maven-plugin</artifactId>
	<version>${spring-cloud-contract.version}</version>
	<extensions>true</extensions>
</plugin>

運(yùn)行./mvnw clean install會(huì)自動(dòng)生成測(cè)試,以驗(yàn)證應(yīng)用程序是否符合添加的合同。默認(rèn)情況下,測(cè)試在org.springframework.cloud.contract.verifier.tests.下生成。

由于尚不存在合同描述的功能的實(shí)現(xiàn),因此測(cè)試失敗。

要使它們通過,您必須添加處理HTTP請(qǐng)求或消息的正確實(shí)現(xiàn)。另外,您必須為自動(dòng)生成的測(cè)試添加正確的基礎(chǔ)測(cè)試類。該類由所有自動(dòng)生成的測(cè)試擴(kuò)展,并且應(yīng)包含運(yùn)行它們所需的所有設(shè)置(例如RestAssuredMockMvc控制器設(shè)置或消息傳遞測(cè)試設(shè)置)。

一旦實(shí)現(xiàn)和測(cè)試基類就位,測(cè)試就會(huì)通過,并且將應(yīng)用程序和存根構(gòu)件都構(gòu)建并安裝在本地Maven存儲(chǔ)庫中。現(xiàn)在可以合并更改,并且可以在在線存儲(chǔ)庫中發(fā)布應(yīng)用程序和存根工件。

在消費(fèi)者方面

Spring Cloud Contract Stub Runner可以用于集成測(cè)試中,以獲取模擬實(shí)際服務(wù)的運(yùn)行中WireMock實(shí)例或消息傳遞路由。

為此,請(qǐng)將依賴項(xiàng)添加到Spring Cloud Contract Stub Runner中,如以下示例所示:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
	<scope>test</scope>
</dependency>

您可以通過以下兩種方式之一在Maven存儲(chǔ)庫中安裝生產(chǎn)者端存根:

  • 通過檢出生產(chǎn)者端存儲(chǔ)庫并添加合同并通過運(yùn)行以下命令來生成存根:

    $ cd local-http-server-repo
    $ ./mvnw clean install -DskipTests

    由于生產(chǎn)者方合同實(shí)施尚未到位,因此跳過了測(cè)試,因此自動(dòng)生成的合同測(cè)試失敗。

  • 通過從遠(yuǎn)程存儲(chǔ)庫獲取已經(jīng)存在的生產(chǎn)者服務(wù)存根。為此,請(qǐng)將存根工件ID和工件存儲(chǔ)庫URL作為Spring Cloud Contract Stub Runner屬性傳遞,如以下示例所示:

    stubrunner:
      ids: 'com.example:http-server-dsl:+:stubs:8080'
      repositoryRoot: https://repo.spring.io/libs-snapshot

現(xiàn)在,您可以使用@AutoConfigureStubRunner注釋測(cè)試類。在注釋中,為Spring Cloud Contract Stub Runner提供group-idartifact-id值,以為您運(yùn)行協(xié)作者的存根,如以下示例所示:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
		stubsMode = StubRunnerProperties.StubsMode.LOCAL)
public class LoanApplicationServiceTests {

 從在線存儲(chǔ)庫下載存根時(shí),請(qǐng)使用REMOTE stubsMode,而對(duì)于脫機(jī)工作,請(qǐng)使用 LOCAL

現(xiàn)在,在集成測(cè)試中,您可以接收預(yù)期由協(xié)作服務(wù)發(fā)出的HTTP響應(yīng)或消息的存根版本。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)