package org.test4j.testng.database.environment; import java.sql.SQLException; import java.util.List; import org.test4j.database.table.ITable; import org.test4j.database.table.TddUserTable; import org.test4j.fortest.beans.User; import org.test4j.fortest.service.UserService; import org.test4j.module.database.IDatabase; import org.test4j.module.database.annotations.Transactional; import org.test4j.module.database.annotations.Transactional.TransactionMode; import org.test4j.module.spring.annotations.SpringBeanByName; import org.test4j.module.spring.annotations.SpringContext; import org.test4j.testng.Test4J; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; @Test(groups = { "test4j" }) @SuppressWarnings("serial") @SpringContext({ "org/test4j/module/spring/testedbeans/xml/beans.xml", "org/test4j/module/spring/testedbeans/xml/data-source.xml" }) public class TransactionManagerTest_DisableMode extends Test4J implements IDatabase { @SpringBeanByName private UserService userService; @Transactional(TransactionMode.DISABLED) public void testTransactionDisable() throws SQLException { db.table(ITable.t_tdd_user).clean().insert(2, new TddUserTable() { { this.put(IColumn.f_id, 1, 2); this.put(IColumn.f_first_name, "darui.wu", "darui.wu2"); } }); List<User> users1 = this.userService.findAllUser(); want.collection(users1).sizeEq(2); db.table(ITable.t_tdd_user).count().isEqualTo(2); try { this.userService.insertUserWillException(new User("test")); want.fail(); } catch (Throwable e) { // 不做任何事,只是验证Disabled状态下的事务回滚 want.string(e.getMessage()).contains("insert user exception!"); } List<User> users2 = this.userService.findAllUser(); want.collection(users2).sizeEq(2); db.table(ITable.t_tdd_user).count().isEqualTo(2); db.table(ITable.t_tdd_user).insert(1, new TddUserTable() { { this.put(IColumn.f_id, "7"); this.put(IColumn.f_first_name, "darui.wu44"); } }); } /** * TestNG的dependsOnMethod是非常不靠谱的,为了验证事务<br> * 所以这里只写2个方法,用@AfterClass替换dependsOnMethods */ @AfterClass public void checkDisabled() { db.table(ITable.t_tdd_user).count().isEqualTo(3); } }