Spring單元測試,SQL數據準備 – JAVA編程語言程序開發技術文章

工具類代碼

在測試中,一般的數據庫數據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(){ 
 
    } 
 

發佈留言