2010-01-06 100 views
2

我使用Spring 3.0的,我有這樣的一套方法:如何檢查我的交易方法是否真的支持交易?

@Transactional (value = "authTransactionManager") 
public void remove(User user) { 
    ... 
} 

我用2個不同的事務管理器,並指定必要的管理器(例如,在authTransactionManager以上)。

我很好奇,如果我指定不存在的管理器會發生什麼。我期望編譯異常或運行時異常,但一切工作正常。這就是爲什麼我懷疑我的方法曾經支持過任何交易。

我該如何測試它? (也許,春天是如此聰明,使用任何可用的經理時,不存在的經理指定,我所有的疑問都沒有根據?)

回答

2

您可以打開調試級別的日誌記錄,這通常是我在調試這些類型的事務問題時!

Spring對於日誌事務處理相當不錯。

+0

+1,你的回答確實對我有幫助。我唯一不知道的仍然是使用哪個事務管理器:我在日誌中看到兩個管理器都被加載,我也看到只有其中一個被使用(即我只看到1次提交)。但是日誌不包含關於使用哪一個的信息。 – Roman 2010-01-06 14:22:40

1

這裏有2個選項:

(1)使用集成測試。您可以使用像dbUnit這樣的工具將數據加載到數據庫中,然後使用事務對數據庫編寫測試。 (我們一直都在測試我們的XML Hibernate映射,實際上,測試是作爲自動構建的一部分執行的。)

(2)使用FIT tests。這些是完全不同的野獸:系統的功能測試。 FIT測試將要求「固定裝置」充當測試和系統之間的膠水,但它們可以幫助解決這個問題。 (在這種情況下,這可能是矯枉過正)。

在這兩種情況下,您都可以選擇(a)進行一些快速而簡單的測試作爲完整性檢查或(b)設計一個進入的測試子系統您的自動構建。 (我們對情況(b)使用集成測試和FIT測試)。