2017-05-19 19 views
0

Groovy ContractでJavaクラスの定数を共有したいと思います。春クラウド契約:契約ファイルでJavaから定数を使用することは可能ですか?

テストベースクラス:

@SpringBootTest(classes = TestBase.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
public class TestBase { 

    public static final String NAME = "just constant"; 

    @Before 
    public void setup() { 
     RestAssured.baseURI = "https://rest-service.com"; 
     RestAssured.port = 443; 
    } 
} 

契約ファイル:

package contracts.test_contract 

import org.springframework.cloud.contract.spec.Contract 
import static test.TestBase.NAME; 

Contract.make { 
    request { 
     method 'GET' 
     url '' 
     body (
       """${value(client(NAME), server(NAME))}""" 
     ) 
    } 
    response { 
     status 200 
    } 
} 

のpom.xml - 春の雲契約プラグインの設定:

<plugin> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-contract-maven-plugin</artifactId> 
       <extensions>true</extensions> 
       <configuration> 
        <testMode>EXPLICIT</testMode> 
        <baseClassForTests>test.TestBase</baseClassForTests> 
       </configuration> 
      </plugin> 

は、クリーンインストールMVNの実行と

を取得
[ERROR] Exception occurred while trying to evaluate the contract at path [C:\dev\_idea_workspace\test_1\src\test\resources\contracts\test_contract\c1.groovy] 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
C:\dev\_idea_workspace\test_1\src\test\resources\contracts\test_contract\c1.groovy: 7: unable to resolve class test.TestBase 
@ line 7, column 1. 
    import static test.TestBase.NAME; 
^

1 error 

しかし、Long.MAX_VALUEのような別のファイルから静的定数をインポートしようとすると、それが動作します。

この問題を解決する方法や、もっと分かりやすい契約ファイルで変数を共有する方法はありますか? ありがとう!

答えて

1

はい、ドキュメントのこのセクション - https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html#_extending_the_dslをお読みください。ここでは、共有されたものでコードが表示されます - https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/master/common。ここでは、それが生産者側https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer/pom.xml#L106-L111に追加されますどのように見ることができ、ここで消費者にhttps://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/consumer/pom.xml#L63-L68

+0

は私がいない非常によく二つのことをしたようだ:他のMavenでなければなりません輸入静的 2)定数を動作しない定数のために) 1モジュールを動作させる –

+0

ええ、最も重要なことは、これらのクラスでJARを生成することです –

関連する問題