SpringCloud 三秒游

2023-12-06 17:04 更新

這個非常簡短的導覽使用Spring Cloud Contract來完成:

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

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

在生產(chǎn)者方面

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

然后將Spring Cloud Contract Verifier依賴項和插件添加到您的構建文件中,如以下示例所示:

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

以下清單顯示了如何添加插件,該插件應放在文件的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>

運行./mvnw clean install會自動生成測試,以驗證應用程序是否符合添加的合同。默認情況下,測試在org.springframework.cloud.contract.verifier.tests.下生成。

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

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

一旦實現(xiàn)和測試基類就位,測試就會通過,并且將應用程序和存根構件都構建并安裝在本地Maven存儲庫中。現(xiàn)在可以合并更改,并且可以在在線存儲庫中發(fā)布應用程序和存根工件。

在消費者方面

Spring Cloud Contract Stub Runner可以用于集成測試中,以獲取模擬實際服務的運行中WireMock實例或消息傳遞路由。

為此,請將依賴項添加到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ǎn)者端存根:

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

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

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

  • 通過從遠程存儲庫獲取已經(jīng)存在的生產(chǎn)者服務存根。為此,請將存根工件ID和工件存儲庫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注釋測試類。在注釋中,為Spring Cloud Contract Stub Runner提供group-idartifact-id值,以為您運行協(xié)作者的存根,如以下示例所示:

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

 從在線存儲庫下載存根時,請使用REMOTE stubsMode,而對于脫機工作,請使用 LOCAL。

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號