一、首先引入spring的jar文件到項目中,我采用maven管理項目依賴的jar包:
<properties> <spring.version>4.0.0.RELEASE</spring.version> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency>
項目目錄結構如下:
還需要在項目中引入junit4的jar包
二、編寫測試類
上圖結構中的JDBCTransactionTest.java為測試類其部分代碼如下:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext_jdbc_transaction.xml") public class JDBCTransactionTest extends AbstractJUnit4SpringContextTests { @Test public void transactionTest() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:xxxxxxxx"; String user = "xxxxxxx"; String password = "xxxx"; Connection conn = null; Statement statement = null; try { conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); statement = conn.createStatement(); String sql = "insert into user_base values(1,'james','aaa',2,12)"; statement.executeUpdate(sql); conn.commit(); } catch (SQLException e) { if (conn != null) conn.rollback(); conn.close(); statement.close(); } } }
要求:該類必須繼承自AbstractJUnit4springcontextTests
然后在其中編寫方法,並在方法上加注釋:@Test
在類的上部添加注釋:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
這樣便可以通過配置spring配置文件的位置進行測試開發了。
三、測試類中獲取IOC容器
在AbstractJUnit4springcontextTests 中有定義applicationContext變量,就是spring的全局IOC容器,通過它可以獲取在xml中定義的bean
為了通過名字方便獲取自定義的bean,我們可以將該applicationContext封裝到方法內,通過給定的bean的名稱向外部提供自定義的bean,也可以提供給外部applicationContext:
public Object getBean(String beanName) { return applicationContext.getBean(beanName); } protected ApplicationContext getContext() { return applicationContext; }