package com.alibaba.druid.test; import javax.sql.DataSource; import org.junit.Assert; import junit.framework.TestCase; import org.nutz.dao.Chain; import org.nutz.dao.Dao; import org.nutz.dao.impl.NutDao; import org.nutz.trans.Atom; import org.nutz.trans.Trans; import com.alibaba.druid.pool.DruidDataSource; public class NutzTransactionTest extends TestCase { private DataSource dataSource; protected void setUp() throws Exception { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl("jdbc:jtds:sqlserver://192.168.1.105/petstore"); dataSource.setUsername("sa"); dataSource.setPassword("hello"); dataSource.setFilters("log4j"); // BasicDataSource dataSource = new BasicDataSource(); // dataSource.setDriverClassName("net.sourceforge.jtds.jdbc.Driver"); // dataSource.setUrl("jdbc:jtds:sqlserver://192.168.1.105/petstore"); // dataSource.setUsername("sa"); // dataSource.setPassword("hello"); this.dataSource = dataSource; } public void test_trans() throws Exception { Dao dao = new NutDao(dataSource); dao.clear("test"); // doTran1(dao); doTran2(dao); } void doTran1(final Dao dao) { try { Trans.exec(new Atom() { @Override public void run() { dao.insert("[test]", Chain.make("name", "1")); throw new RuntimeException(); } }); } catch (Exception e) { } Assert.assertEquals(0, dao.count("[test]")); } void doTran2(final Dao dao) { try { Trans.exec(new Atom() { @Override public void run() { dao.insert("[test]", Chain.make("name", "1")); dao.insert("[test]", Chain.make("name", "111111111111111111111111111111")); } }); } catch (Exception e) { // e.printStackTrace(); } Assert.assertEquals(0, dao.count("[test]")); } }