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

Java 如何检查我的事务方法是否真的支持事务?,java,spring,testing,transactions,aop,Java,Spring,Testing,Transactions,Aop,我使用的是Spring 3.0,我有一套类似这样的方法: @Transactional (value = "authTransactionManager") public void remove(User user) { ... } 我使用2个不同的事务管理器并指定必要的管理器(authTransactionManager,在上面的示例中) 我很好奇如果我指定一个不存在的经理会发生什么。我期望编译异常或运行时异常,但一切正常。这就是为什么我怀疑我的方法是否支持任何事务 我如何测试它?(

我使用的是Spring 3.0,我有一套类似这样的方法:

@Transactional (value = "authTransactionManager")
public void remove(User user) {
    ...
}
我使用2个不同的事务管理器并指定必要的管理器(
authTransactionManager
,在上面的示例中)

我很好奇如果我指定一个不存在的经理会发生什么。我期望编译异常或运行时异常,但一切正常。这就是为什么我怀疑我的方法是否支持任何事务


我如何测试它?(也许,spring非常聪明,在指定了不存在的管理器并且我所有的怀疑都没有根据的情况下使用任何可用的管理器?

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

Spring非常擅长记录事务。

这里有两个选项:

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

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


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

+1,您的回答真的帮助了我。我唯一不知道的是使用了哪一个事务管理器:我在日志中看到两个管理器都已加载,而且我还看到只使用了其中一个(即,我只看到1个提交)。但是日志并不包含关于使用哪一个的信息。