如何检查我的事务方法是否真的支持事务?

时间:2010-01-06 13:38:24

标签: java spring testing transactions aop

我正在使用Spring 3.0,我有一组这样的方法:

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

我使用2个不同的事务管理器并指定必要的管理器(上例中为authTransactionManager)。

我很好奇如果我指定不存在的经理会发生什么。我期望编译异常或运行时异常,但一切正常。这就是为什么我对我的方法中支持的任何交易都有疑问。

我该如何测试? (也许,春天是如此聪明,当不存在的经理指定并且我的所有怀疑都没有根据时使用任何可用的经理?)

2 个答案:

答案 0 :(得分:2)

您可以打开调试级日志记录,这通常是我在调试这些事务问题时所做的事情!

Spring非常适合记录事务。

答案 1 :(得分:1)

以下是两个选项:

(1)使用集成测试。您可以使用dbUnit之类的工具将数据加载到数据库中,然后使用事务对数据库编写测试。 (我们一直这样做来测试我们的XML Hibernate映射。实际上,测试是作为自动构建的一部分执行的。)

(2)使用FIT tests。这些是完全不同的野兽:系统的功能测试。 FIT测试需要“灯具”作为测试和系统之间的粘合剂,但它们可以帮助解决这个问题。 (在这种情况下可能有点过头了。)

在这两种情况下,您都可以选择(a)进行一些快速和脏的测试作为完整性检查,或者(b)设计一个进入自动构建的测试子系统。 (我们对案例(b)使用集成测试和FIT测试)。