12

Spring Boot でコントローラーをテストする簡単な Junit を実行しています。テスト コードは次のようになります。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {FrontControllerApplication.class})
@WebAppConfiguration
@ComponentScan
@IntegrationTest({"server.port:0", "eureka.client.registerWithEureka:false", "eureka.client.fetchRegistry:false"})
@ActiveProfiles("integrationTest")
public class MyControllerIT {

application-integrationTest.properties には、次の Eureka 設定があります。

####### Eureka
eureka.serviceUrl.default=http://localhost:8767/eureka/
eureka.printDeltaFullDiff=false
eureka.client.refresh.interval=1
eureka.appinfo.replicate.interval=1
eureka.serviceUrlPollIntervalMs=1000
eureka.name=${spring.application.name}

####### Netflix Eureka #######
eureka.client.serviceUrl.defaultZone=http://localhost:8767/eureka/
eureka.client.instanceInfoReplicationIntervalSeconds=1
eureka.client.initialInstanceInfoReplicationIntervalSeconds=0
eureka.instance.virtualHostName=${spring.application.name}
eureka.instance.preferIpAddress=true
eureka.instance.initialStatus=DOWN
eureka.instance.leaseRenewalIntervalInSeconds=3
eureka.instance.leaseExpirationDurationInSeconds=10
eureka.instance.metadataMap.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
eureka.eurekaserver.connectionIdleTimeoutInSeconds=5
eureka.responseCacheAutoExpirationInSeconds=5

junit テストが開始されると、次のように表示されます。

2015-09-16 16:46:03,905 ERROR localhost-startStop-1 com.netflix.discovery.DiscoveryClient Can't get a response from http://localhost:8767/eureka/apps/ Can't contact any eureka nodes - possibly a security group issue? com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:184) ~[jersey-apache-client4-1.11.jar:1.11]

テストはパスします。それは問題ではありませんが、Eureka に関係する多くの例外スタック トレースが見られます。質問は、テストを行うときに eureka をモックする方法や、ブラインアップをスキップする別の方法があるかどうかです。

テストが失敗し、tst がはるかに高速に実行される場合、関連するスタック トレースを簡単に確認できるという利点があります。

4

2 に答える 2

27

もう 1 つの解決策は、test/resources の下の application.properties または application.yml ファイルで Eureka Client を無効にすることです。

アプリケーションのプロパティ:

eureka.client.enabled=false

アプリケーション.yml:

eureka: client: enabled: false

これには、Eureka Client を無効にする必要があるすべての JUnit テストにシステム プロパティを含めることを覚えておく必要がないという利点があります。

于 2016-08-04T14:02:27.477 に答える
13

eureka.client.enabled=falseテスト用のシステム プロパティを設定できます。

gradle を使用してテストを実行している場合は、次のようにすることができます。

tasks.withType(Test) {
    systemProperty 'eureka.client.enabled', 'false'
}

IDE でテストを実行している場合は、そこでもシステム プロパティを設定する必要があります。

于 2015-11-18T21:25:15.453 に答える