2013-08-06 60 views
0

在我的Java-Mavan-Spring項目中,我使用cassandra unit來嘗試和測試我的DAO。使用cassandra單元測試cassandra時的例外

我創建2個文件在我的類路徑:

  1. 一個簡單的XML描述
  2. 甲卡桑德拉配置文件(cassandra.yaml)我的初始數據

這是我的測試類:

public class UserProfilingCassandraDaoUTest extends BaseJunitTestCase { 

    @Rule 
    public CassandraUnit cassandraUnit = new CassandraUnit(new ClassPathXmlDataSet("cassandraTestValues.xml"), "cassandra.yaml", "127.0.0.1"); 

    private HectorCassandraConnection connection; 

    @Before 
    public void init() throws Exception { 
    connection = Mockito.mock(HectorCassandraConnection.class); 
    Mockito.when(connection.getKeyspace()).thenReturn(cassandraUnit.keyspace); 
    } 

    @Test 
    public void shouldHaveLoadTestDataSet() throws Exception { 
    Assert.assertNotNull(cassandraUnit.keyspace); 
    Assert.assertEquals(cassandraUnit.keyspace.getKeyspaceName(), "rtb"); 
    } 

    @Test 
    public void getUserStatsTest() { 
     // Some Test 
    } 
} 

這是我的cassandraTestValues.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<keyspace xmlns="http://xml.dataset.cassandraunit.org"> 
    <name>rtb</name> 
    <columnFamilies> 
     <columnFamily> 
      <name>my_column_family</name> 
      <keyType>UTF8Type</keyType> 
      <comparatorType>UTF8Type</comparatorType> 
      <defaultColumnValueType>UTF8Type</defaultColumnValueType> 
      <row> 
       <key>12345__678_910</key> 
       <column> 
        <name>Col1</name> 
        <value>6</value> 
       </column> 
       <column> 
        <name>Col2</name> 
        <value>6</value> 
       </column> 
       <column> 
        <name>Col3</name> 
        <value>3</value> 
       </column> 
      </row> 
     </columnFamily> 
    </columnFamilies> 
</keyspace> 

當我跑我的測試我得到this logthis error

我已經嘗試了幾個小時很多不同的方法來克服這個問題沒有成功。 有什麼建議嗎?

回答

1

這有點難過,但將cassandra-unit版本從1.2.0.1更改爲1.0.3.1,它的工作方式就像一個魅力。 我通過將this project導入到我的工作區來解決問題。導入的項目工作得很好,並在完成後發現版本之間的差異是導致問題的原因。

此外,後來的maven版本中沒有一個版本起作用,這意味着1.0.3.1之後出現的所有版本都失敗了(1.2.0.1,1.1.2.1,1.1.1.3,1.1.1.2,1.1.1.1,1.1 .0.1)。

我希望這可以節省一些時間在未來的人..它肯定花了我一段時間。