`
MyNameSky
  • 浏览: 28376 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论
阅读更多
package com.lxitedu.dao.jdbcimpl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Connection;

import org.dbunit.Assertion;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.lxitedu.dao.CriterionDAO;
import com.lxitedu.dao.DAOFactory;
import com.lxitedu.pojo.Criterion;

public class CriterionDAOImplTest {
private Connection connection;
private IDatabaseConnection iDatabaseConnection;
private Criterion criterion;
private final Long ID = new Long(222);
private CriterionDAO criterionDAO;
private final String TABLE_NAME = "criterion";
private final String BACKUP = "criterionBackup.xml";
private String path;

@Before
public void setUp() throws Exception {
connection = TestDBConnection.getConnection();
iDatabaseConnection = new DatabaseConnection(connection);
criterionDAO = DAOFactory.getCriterionDAO();
QueryDataSet queryDataSet = new QueryDataSet(iDatabaseConnection);
queryDataSet.addTable(TABLE_NAME);
path = Tools.getRelativePath(CriterionDAOImplTest.class);
System.out.println(path);
FlatXmlDataSet.write(queryDataSet, new FileOutputStream(path + BACKUP));
IDataSet dataSet = new FlatXmlDataSet(new FileInputStream(path + "readyCriterion.xml"));
DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, dataSet);
initTest();
}

public void initTest() throws Exception {
criterion = new Criterion();
criterion.setId(ID);
criterion.setContent("content");
criterion.setErrorExample("errorExample");
criterion.setRightExample("rightExample");
criterion.setErrorRating(5);
criterion.setErrorType(new Long(1));
criterion.setErrorReason("errorReason");
criterionDAO.add(criterion);
}

@After
public void tearDown() throws Exception {
FlatXmlDataSet flatXmlDataSet = new FlatXmlDataSet(new File(path + BACKUP));
DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, flatXmlDataSet);
criterionDAO = null;
criterion = null;
}

@Test
public void testAdd() {
compareData(path + "addCriterion.xml");
}

private void compareData(String xmlFile) {
try {
IDataSet expectedDataSet = new FlatXmlDataSet(new FileInputStream(xmlFile));
ITable expectedTable = expectedDataSet.getTable(TABLE_NAME);
iDatabaseConnection = new DatabaseConnection(connection);
IDataSet databaseDataSet = iDatabaseConnection.createDataSet();
ITable actualTable = databaseDataSet.getTable(TABLE_NAME);
Assertion.assertEquals(expectedTable, actualTable);
} catch (Exception e) {
e.printStackTrace();
}
}

@Test
public void testUpdate() {
criterion = new Criterion();
criterion.setId(ID);
criterion.setContent("contents");
criterion.setErrorExample("errorExamples");
criterion.setRightExample("rightExamples");
criterion.setErrorRating(5);
criterion.setErrorType(new Long(1));
criterion.setErrorReason("errorReasons");
criterionDAO.update(criterion);
compareData(path + "updateCriterion.xml");
}
}

public class Tools {
public static String getRelativePath(Class<?> objectClass) {
String path = String.valueOf(objectClass.getResource(""));
String projectName = "CMS";
String xmlPath = "/test/testxml/";
return path.substring(path.indexOf(":/") + 2, path.indexOf(projectName) + projectName.length()) + xmlPath;
}
}
  <?xml version="1.0" encoding="UTF-8" ?>
- <dataset>
  <criterion id="111" content="content" rightExample="rightExample" errorExample="errorExample" errorReason="errorReason" errorRating="4" criterionType="1" />
  <criterion id="222" content="content" rightExample="rightExample" errorExample="errorExample" errorReason="errorReason" errorRating="5" criterionType="1" />
  </dataset>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics