の間のGradleで置換されていません。 私はサービスのステータスを与えるStatusControllerクラスを持っています。これには、サービス名、ビルドタイム、環境、バージョンが含まれます。ここで 春のブート値が、これは春ブーツやGradleの問題私はRESTfulサービスを構築するために、スプリングブーツ1.4を使用しています</p> <p>であれば、私は知らない統合テスト
は私のコントローラである@RestController
public class StatusController
{
@Value("${service.version: not configured}")
private String version;
@Value("${service.name: not configured}")
private String appName;
@Value("${service.env: not configured}")
private String env;
@Value("${service.timestamp: not configured}")
private String buildDate;
@RequestMapping(value = "/status", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public String getStatus() throws JsonProcessingException {
Map<String,String> map = new HashMap<>();
map.put("version", version);
map.put("appName", appName);
map.put("env", env);
map.put("buildDate", buildDate);
return new ObjectMapper().writeValueAsString(map);
}
}
のsrc /メイン/リソース/ application.properties
service.name=${name}
service.version=${version}
service.timestamp=${timestamp}
build.gradle(のみ関連セクション)
processResources {
expand project.properties
}
def buildTime() {
def today = new Date()
def formattedDate = today.format('MM-dd-yyyy HH:mm:ss z')
return formattedDate
}
ext.timestamp=buildTime()
私はバージョンdeを持っています私は私のサービスを開始(bootRunをgradlew)と私は/ステータスを打ったときgradle.properties
version=1.0.0-SNAPSHOT.
で罰金、私が注入されたすべての値(ない「に設定されていない」のデフォルト値を参照してください。しかし、私のテストでは、置換されていない値が表示されていますが、デフォルト値は注入されています。
は、ここで私は値がテストクラスに置換されていない確認し、私のテストクラスデバッガを使用して
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ApplicationTests {
@Test
public void contextLoads() {
System.out.println("test passed");
}
@Value("${service.version: not configured}")
private String version;
@Value("${service.name: not configured}")
private String appName;
@Value("${service.env: not configured}")
private String env;
@Value("${service.timestamp: not configured}")
private String buildDate;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void exampleTest() throws Exception {
String lifeCheck = this.restTemplate.getForObject("/status", String.class);
System.out.print(lifeCheck);
}
}
です。 だけでなく、コントローラここ
に置換されていないが、テスト
{"appName":" not configured","buildDate":" not configured","env":" not configured","version":" not configured"}
どのようにテストを行っていますか?コマンドラインからGradleを介して? IDEのテストサポートを使用しないIDE内 –
IDEでテストを実行している場合は、次のGradleフォーラムディスカッションが役に立ちます:https://discuss.gradle.org/t/gradle-eclipse-seems-to-ignore-any-user-defined- logic-in-processresources-and-processtestresources-tasks/7358/9 –