簡體   English   中英

如何為 Pact 提供程序測試執行 mvn 測試

[英]How to execute mvn test for Pact provider tests

我正在嘗試使用mvn clean test運行 Pact Provider 測試(用 Java 開發)。 成功執行 Pact 測試后會拋出錯誤:

[TestNG] Reporter org.testng.reporters.SuiteHTMLReporter@40298285 failed java.lang.NullPointerException
at java.lang.String.compareTo(String.java:1155)
at org.testng.reporters.SuiteHTMLReporter$1.compare(SuiteHTMLReporter.java:320)

Pom.xml:

<dependency>
    <groupId>au.com.dius</groupId>
    <artifactId>pact-jvm-provider-junit_2.12</artifactId>
    <version>3.6.8</version>
    <scope>test</scope>
</dependency>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M4</version>
    <configuration>
        <systemPropertyVariables>
            <pact.rootDir>${pact.dir}</pact.rootDir>
            <buildDirectory>${project.build.directory}</buildDirectory>        
            <pact.verifier.publishResults>true</pact.verifier.publishResults>
        </systemPropertyVariables>
    </configuration>
</plugin>

我是否缺少任何其他配置來從 maven 命令執行 Pact Provider 測試用例?

確保您在 pom 中正確定義了 pact dir,如下所示:

<project>
  <properties>
    <pact.dir>${project.build.directory}/pacts</pact.dir>
  </properties>
</project>

我可能是錯的,但我不確定在提供者端使用這些屬性是否正確,就像你在這里所做的那樣。 它們通常用於消費者端,以便消費者可以將協議文件寫入您選擇的目錄。 https://docs.pact.io/implementation_guides/jvm/consumer/junit5/#sharing-the-directory-pact-files-are-written-to

如果要運行目錄中的協議提供程序測試,則應考慮使用“au.com.dius.pact.provider”maven 插件。 https://docs.pact.io/implementation_guides/jvm/provider/maven#verifying-all-pact-files-in-a-directory-for-a-provider

<plugin>
    <groupId>au.com.dius.pact.provider</groupId>
    <artifactId>maven</artifactId>
    <version>4.1.0</version>
    <configuration>
      <serviceProviders>
        <!-- You can define as many as you need, but each must have a unique name -->
        <serviceProvider>
          <name>provider1</name>
          <!-- All the provider properties are optional, and have sensible defaults (shown below) -->
          <protocol>http</protocol>
          <host>localhost</host>
          <port>8080</port>
          <path>/</path>
          <pactFileDirectory>path/to/pacts</pactFileDirectory>
        </serviceProvider>
      </serviceProviders>
    </configuration>
</plugin>

另一種選擇是使用“@PactFile”、“@PactUrl”或“@PactFolder” https://docs.pact.io/implementation_guides/jvm/provider/junit/#example-of-http-test注釋您的測試確實,這確實類似於在運行測試時將文件夾定義為系統屬性的一部分,但文檔中沒有提到如何在協議提供者驗證測試運行期間加載協議合約。 請參閱: https://docs.pact.io/implementation_guides/jvm/provider/junit/#pact-source

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM