2017-06-28 74 views
0

如何使用jCache和HazelcastProvider實現緩存單元測試?使用Hazelcast提供程序測試jCache

目前我得到這個錯誤:

Caused by: java.lang.IllegalStateException: Unable to connect to any address in the config! The following addresses were tried: [localhost/127.0.0.1:5701, localhost/127.0.0.1:5702, localhost/127.0.0.1:5703] 

簡化下面的代碼:

@RunWith(SpringJUnit4ClassRunner.class) 
@TestPropertySource("classpath:provider.properties") 
@ContextConfiguration(classes = { 
    CustomCacheConfiguration.class 
}) 

與多播一起hazelcast.xml文件我已經緩存聲明,所以我的理解是正確的,我應該有一個嵌入式實例。

//編輯

這裏是hazelcast.xml文件:

<hazelcast xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.hazelcast.com/schema/config 
          http://www.hazelcast.com/schema/config/hazelcast-config-3.8.xsd" 
     xmlns="http://www.hazelcast.com/schema/config"> 
    <group> 
     <name>test</name> 
     <password>test</password> 
    </group> 
    <network> 
     <join> 
      <multicast enabled="true"/> 
     </join> 
    </network> 

    <!-- cache definitions --> 
</hazelcast> 

而且這裏是日誌:

Jun 28, 2017 10:55:45 AM com.hazelcast.client.config.XmlClientConfigLocator 
INFO: Loading 'hazelcast-client-default.xml' from classpath. 
Jun 28, 2017 10:55:45 AM com.hazelcast.client.config.XmlClientConfigLocator 
INFO: Loading 'hazelcast-client-default.xml' from classpath. 
Jun 28, 2017 10:55:45 AM com.hazelcast.core.LifecycleService 
INFO: hz.client_0 [dev] [3.8.2] HazelcastClient 3.8.2 (20170518 - a60f944) is STARTING 
Jun 28, 2017 10:55:46 AM com.hazelcast.core.LifecycleService 
INFO: hz.client_0 [dev] [3.8.2] HazelcastClient 3.8.2 (20170518 - a60f944) is STARTED 
Jun 28, 2017 10:55:46 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5701 as owner member 
Jun 28, 2017 10:55:46 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5702 as owner member 
Jun 28, 2017 10:55:46 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5703 as owner member 
Jun 28, 2017 10:55:46 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
WARNING: hz.client_0 [dev] [3.8.2] Unable to get alive cluster connection, try in 2940 ms later, attempt 1 of 2. 
Jun 28, 2017 10:55:49 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5703 as owner member 
Jun 28, 2017 10:55:49 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5702 as owner member 
Jun 28, 2017 10:55:49 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
INFO: hz.client_0 [dev] [3.8.2] Trying to connect to [127.0.0.1]:5701 as owner member 
Jun 28, 2017 10:55:49 AM com.hazelcast.client.spi.impl.ClusterListenerSupport 
WARNING: hz.client_0 [dev] [3.8.2] Unable to get alive cluster connection, try in 2996 ms later, attempt 2 of 2. 
Jun 28, 2017 10:55:52 AM com.hazelcast.core.LifecycleService 
INFO: hz.client_0 [dev] [3.8.2] HazelcastClient 3.8.2 (20170518 - a60f944) is SHUTTING_DOWN 
Jun 28, 2017 10:55:52 AM com.hazelcast.core.LifecycleService 
INFO: hz.client_0 [dev] [3.8.2] HazelcastClient 3.8.2 (20170518 - a60f944) is SHUTDOWN 
+0

你能後的日誌?可能是Hazelcast沒有開始。嚴格地說,這不會是一個單元測試,你可能想要使用模擬對象。或者,查看https://github.com/hazelcast/hazelcast/tree/master/hazelcast/src/test/java/com/hazelcast/cache,瞭解測試如何在那裏運行。 –

+1

您應該檢查類路徑和其他bean。 hazelcast.xml文件將被Hazelcast服務器使用,無論你是否啓動一個,或者它的啓動不夠快。你有錯誤信息來自'HazelcastClient'。客戶端正在啓動,無法找到要連接的服務器 - 因此無論是啓動客戶端而不是服務器,還是服務器之前的客戶端。 –

+0

問題是我沒有在任何地方啓動客戶端,看起來,在測試過程中,hazelcast無法加載我的xml文件,因此加載了默認的客戶端。 – Forin

回答

0

我想我已經找到了解決辦法。

我創造了新的hazelcast-test.xml文件,下面的XML:

<hazelcast xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.hazelcast.com/schema/config 
          http://www.hazelcast.com/schema/config/hazelcast-config-3.9.xsd" 
     xmlns="http://www.hazelcast.com/schema/config"> 

    <properties> 
     <property name="hazelcast.shutdownhook.enabled">false</property> 
    </properties> 

    <network> 
     <join> 
      <multicast enabled="false"/> 
      <tcp-ip enabled="false"/> 
     </join> 
    </network> 

    <import resource="classpath:hazelcast-cache-declarations.xml"/> 
</hazelcast> 

然後在我加入這個測試:

@BeforeClass 
public void init() { 
    Config config = new ClasspathXmlConfig("hazelcast-test.xml"); 
    HazelcastInstance instance = Hazelcast.newHazelcastInstance(config); 
} 

@AfterClass 
public void clean() { 
    Hazelcast.shutdownAll(); 
} 
+0

你在'@ Before'而不是'@ BeforeClass'中創建Hazelcast實例,所以如果你有多個'@ Test'方法,你將會有多個實例。這可以解釋錯誤,但是在任何原因顯而易見之前,確實需要上傳更多的代碼。 –

+0

我已經修復了它,謝謝指出'@ BeforeClass'註解。我已經改變了答案,現在所有的測試工作。 – Forin

相關問題