![](/img/trans.png)
[英]Hibernate/Spring - JUnit fails with Transactional(REQUIRES_NEW)
[英]Testing REQUIRES_NEW in JUnit
運行我的測試時,它掛在對method()的調用上。 難道我做錯了什么? 救命!
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"beans.xml"})
@Transactional(rollbackFor = Exception.class)
public class Test {
@Test
public void test() {
itemUnderTestDao.method();
// ...
}
}
public class ItemUnderTestDao {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void method() {
// ...
}
}
忘記上面的代碼。 現在,我已經在http://www44.zippyshare.com/v/46865082/file.html上載了一個Eclipse項目(不包括像spring這樣的依賴項)。 非常感謝您提供有關如何通過測試的所有輸入! 如果我有兩個sqlite數據庫和兩個dataSources,則測試通過。
正如mrembisz所說,您試圖同時在2個線程中獲得2個連接。
我在稍微不同的情況下遇到了同一件事。
您可以通過2種方式解決此問題:
REQUIRED
,這樣您就可以重用測試最初獲得的Connection。 maxThreadPoolSize >= (maxSimultaniousUpdates + 1) + (min size for other activities)
(如果您在列表1待處理的連接中,則最終所有待處理的連接操作即可完成)。 否則,這將重新出現在生產中。 對我來說,第一個解決方案似乎更好,當然,如果它不損害您的邏輯:)
您正在嘗試打開與數據庫的第二個連接。 由於@Transactional
為類Test
打開了第一個,因此method()
上的REQUIRES_NEW
強制另一個連接。
您的連接池可能僅允許一個並發連接。 檢查其大小和數據庫配置。
還要遍歷您的問題並將選定的答案標記為已接受(答案主體旁邊的復選標記形狀)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.