2010-01-06 54 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测试)。