当前位置:数据库 > SQLServer >>

Spring单元测试,SQL数据准备

工具类代码

在测试中,一般的数据库数据Mock是不可少的。在前文的基础上,我们写读取脚本把数据写入数据库的工具类。

 

[java] 
import org.junit.After; 
import org.junit.Before; 
import org.junit.runner.RunWith; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
 
import javax.sql.DataSource; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.HashMap; 
 
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"classpath:testApplicationContext.xml"}) 
public class SqlDataPrepareUtil { 
    @Autowired 
    DataSource dataSource; 
    SimpleJdbcTemplate template; 
 
    private final Logger logger = LoggerFactory.getLogger(SqlDataPrepareUtil.class); 
 
    @Before 
    public void setUp() throws IOException { 
 
        template = new SimpleJdbcTemplate(dataSource); 
 
 
        String content = sqlForThisTest(); 
        if (content.equals("")) { 
            return; 
        } 
 
        String[] sqlLines = content.split(";"); 
        for (int i = 0; i < sqlLines.length; i++) { 
            String sql = sqlLines[i]; 
 
            if (0 == sql.trim().length()) { 
                continue; 
            } 
            template.update(sql); 
            if (logger.isDebugEnabled()) { 
                logger.debug(sql); 
            } 
        } 
    } 
 
    private String sqlForThisTest() throws IOException { 
        String sqlName = getClass().getSimpleName() + ".sql"; 
        InputStream stream = getClass().getResourceAsStream(sqlName); 
        if (stream == null) { 
            return ""; 
        } 
        BufferedReader reader = new BufferedReader( 
                new InputStreamReader(stream, "UTF-8")); 
        StringBuilder buffer = new StringBuilder(); 
        try { 
            String line = null; 
            while ((line = reader.readLine()) != null) { 
                buffer.append(line); 
            } 
        } finally { 
            reader.close(); 
        } 
        return buffer.toString(); 
    } 
 

//www.heatpress123.net
 

工具类使用

脚本存放的地方和测试类包名路径一致,测试类的写法如下:

 

[java] 
import org.jboss.resteasy.mock.MockHttpRequest; 
import org.jboss.resteasy.mock.MockHttpResponse; 
import org.junit.Assert; 
import org.junit.Ignore; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 
import org.springframework.test.annotation.Rollback; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.transaction.annotation.Transactional; 
 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response.Status; 
import java.io.UnsupportedEncodingException; 
import java.net.URISyntaxException; 
import java.util.ArrayList; 
import java.util.List; 
 
import static com.natpryce.makeiteasy.MakeItEasy.*; 
 
@Component 
public class LineSyncTest extends SqlDataPrepareUtil{ 
 
 
    @Test 
    @Rollback(true) 
    public void should_return_XXX_when_given_xx(){ 
 
    } 
 

补充:软件开发 , Java ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,