Tümleştirme testlerinde management.port
özelliğini 0
olarak ayarlarken aktüatör bitiş noktasına hizmet veren katıştırılmış tomcat için atanan bağlantı noktasının nasıl alınacağı konusunda danışmanlık arıyorum .Spring Boot yönetim bağlantı noktasını çalışma zamanında alın. management.port = 0
server.port: 8080
server.contextPath: /my-app-context-path
management.port: 8081
management.context-path: /manage
...
benim entegrasyon testleri daha sonra yukarıda gösterilen bağlantı noktalarını ayarlayarak, @WebIntegrationTest
not eklenmiş
@WebIntegrationTest({ "server.port=0", "management.port=0" })
ve aşağıdaki 0
için: Aşağıdaki application.yml
yapılandırma ile Bahar Boot 1.3.2 kullanılarak
Im Tam tümleştirme testleri yaparken uygulama yapılandırmasına erişmek için yardımcı sınıf kullanılmalıdır:
Zaten standart bağlantı noktasının local.server.port
kullanarak edinilebileceğini biliyorum ve local.management.port
adlı yönetim uç noktası için bir miktar eşdeğer gibi görünüyor. Ama bunun farklı bir anlamı var gibi görünüyor.
Düzenleme: resmi belgeler bunu yapmanın bir yolu söz etmez: (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-discover-the-http-port-at-runtime)
o yönetim bağlantı noktası üzerinde bir el almak için herhangi bir belgesiz yolu şu anda var mı?
Çözüm Düzenleme: Ben bahar-önyükleme uygulamasının test edilmesine yönelik Spock-Framework ve Spock-Bahar kullanarak olduğum i kullanarak uygulamayı başlatmak zorunda
:
@ContextConfiguration(loader = SpringApplicationContextLoader.class, classes = MyApplication.class)
Her nasılsa Spock-Spring veya test başlatma, @Value
Ek Açıklamalarının değerlendirilmesini etkiliyor gibi görünüyor, böylece
java.lang.IllegalArgumentException: Could not resolve placeholder 'local.management.port' in string value "${local.management.port}"
i mülk var biliyordum, bu yüzden sadece bir test zamanında özellik değerini almak için doğrudan yayı Environment
kullanın:
@Autowired
ManagementServerProperties managementServerProperties
@Autowired
Environment environment
public String getManagementPath() {
final int managementPort = environment.getProperty('local.management.port', Integer.class)
final String managementPath = managementServerProperties.getContextPath()
return "http://localhost:${managementPort}${managementPath}"
}
Teşekkür ederim @ dave-bower, çözümünüzün doğru yönde olduğunu ima ettim. – mawi
Sorunum, '@ Value' Annotation'ı kullanırken bu özelliğin çözülmediği Spock-Framework ve Spock-Spring kullanıyorum. Muhtemelen Testlerimi '@ContextConfiguration (loader = SpringApplicationContextLoader.class, classes = MyApplication.class)' kullanarak başlatıyorum. Sorularımı düzenleyip Spock Testing Environment'ım için çözümü ekleyeceğim. – mawi
Yardım etmesine sevindim! –