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のような別のファイルから静的定数をインポートしようとすると、それが動作します。
この問題を解決する方法や、もっと分かりやすい契約ファイルで変数を共有する方法はありますか? ありがとう!
は私がいない非常によく二つのことをしたようだ:他のMavenでなければなりません輸入静的 2)定数を動作しない定数のために) 1モジュールを動作させる –
ええ、最も重要なことは、これらのクラスでJARを生成することです –