首先,我在StackOverflow上发现了很多与此相关的线程,但是它们都没有真正帮助我,所以很抱歉提出可能重复的问题。
我正在使用spring-test运行JUnit测试,我的代码如下所示
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {})
public class StudentSystemTest {
@Autowired
private StudentSystem studentSystem;
@Before
public void initTest() {
// set up the database, create basic structure for testing
}
@Test
public void test1() {
}
...
}
我的问题是我希望我的测试不影响其他测试。所以我想为每个测试创建类似回滚的内容。我为此进行了很多搜索,但到目前为止我什么都没找到。我为此使用Hibernate和MySql
只需@Transactional
在测试之上添加注释:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"testContext.xml"})
@Transactional
public class StudentSystemTest {
默认情况下,Spring将围绕您的测试方法和@Before
/
@After
回调启动一个新事务,并在最后回滚。默认情况下它可以工作,在上下文中有一些事务管理器就足够了。
来自:
10.3.5.4事务管理
(粗体):
在TestContext框架中,事务由TransactionalTestExecutionListener进行管理。请注意,即使您未在测试类上显式声明,它
TransactionalTestExecutionListener
也是
默认配置的@TestExecutionListeners
。但是,要启用对事务的支持,必须PlatformTransactionManager
在由@ContextConfiguration
语义加载的应用程序上下文中提供一个bean
。另外, 您必须@Transactional
在类或方法级别为测试声明。
我正在使用spring-test运行JUnit测试,我的代码如下所示 我的问题是我希望我的测试不影响其他测试。所以我想为每个测试创建一些类似回滚的东西。我为此找了很多,但到目前为止一无所获。我使用Hibernate和MySql来实现这个
我创建了一个MySQL数据库,并填充了用于测试的行。我想在这个数据库上进行DAO单元测试。每个都是,因此每次测试后都会进行回滚。不幸的是,它无法工作,因为我的数据库仍在进行更改。 我正在用以下上下文加载Spring配置。xml 这个问题说我 必须在应用程序上下文中提供bean 但即使有了它(在我的上下文中是),什么都没有发生,我的数据库仍然被修改,没有回滚。 这是我的DAO测试课 在我的配置中,或
问题是,即使在为Exception.class声明回滚之后,事务仍然没有回滚。 1.我的数据源
尽管捕获了RuntimeException并声明了noRollbackFor属性,但事务总是回滚。有什么解释吗?? 日志跟踪信息:
问题内容: 我在EJB3无状态会话Bean中使用CMT。另外,我还创建了自己的具有注释“ @ApplicationException(rollback = true)”的异常。 要回滚事务时是否必须使用“ context.setRollbackOnly()”? 我可以通过在bean的public方法内抛出异常来回滚事务吗? 如果是这样(对Q#2的回答是“是”),我是否必须通过在方法中声明异常来将异
情景故事时间: 我“继承”了一个程序,一个用于访问数据库的相当简单的webservice。该程序在某个地方有一个缺陷:它试图更新一个没有更新授权的表。该程序只具有更新数据库队列的权限(Oracle),以保存谁访问了什么信息。这是不受欢迎的行为,现在我纠正了它。注意:这与这个问题本身无关,它只是导致我提出这个问题的原因。 该程序使用Spring+Hibernate来管理和访问数据和事务。 因为程序的