0
我要寫一個JUnit來檢查版本是否被維護(在一個事件上)。下面是我使用的是什麼JUnit的:如何爲使用envers的代碼創建Junit?
@Test
Public void testAudit() {
try {
//create Dao code
dao.save(); //This will create entry in AUD- and REVINFO-tables perfectly
SomeObject obj = SomeHelper.getAuditData(dao));
/*Method to be tested which generates audit message using envers i.e(dao created)*/
//Some logic to check if output is as expected
}
catch(Exception e) {
Assert.fail();
}
finally {
dao.delete(); //delete the data saved by JUnit (Problem starts here)
}
}
調用刪除DAO將導致
UnsupportedOperationException異常:無法寫入只讀對象
我使用了Ehcache緩存。我搜索了這個問題,並且知道這可能是因爲CacheConcurrencyStrategy
錯誤地爲我想要刪除的域對象設置的。我檢查了。
對於域對象,沒有CacheConcurrencyStrategy
。但嵌套對象有CacheConcurrencyStrategy
設爲READ_WRITE
(這可能是真正的罪魁禍首)。
但我不想更改現有的域和現有的代碼。對於JUnit,有什麼辦法可以繞過CacheConcurrencyStrategy
?如果沒有,有沒有可能的出路而不改變現有的代碼?
您應該向我們展示引發異常的位置,刪除操作是什麼?爲什麼ch是你的堆棧跟蹤? – Matteo 2012-07-30 21:54:55
你是否嘗試刪除Envers條目?如果您想刪除審計數據,也許只是試圖清空修訂表。 – adamw 2012-08-01 06:07:10