我的测试出现以下错误
org.dbunit.dataset.NoSuchColumnException: NEWS.ID - (Non-uppercase input column: id) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
at org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:128)
at org.dbunit.operation.AbstractOperation.getOperationMetaData(AbstractOperation.java:89)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:140)
at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:79)
at org.dbunit.AbstractDatabaseTester.executeOperation(AbstractDatabaseTester.java:155)
at org.dbunit.AbstractDatabaseTester.onSetup(AbstractDatabaseTester.java:77)
at org.dbunit.DatabaseTestCase.setUp(DatabaseTestCase.java:134)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
以下是我的准备数据
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<news id="4028bcf0230877e40123087951b80001" type="平台新闻" title="yt" author="ghj" source="yfgjh" keyword="fd" compositionDate="2009-08-05" publishDate="2009-08-27" readCount="657" attachmentName="1.JPG" attachmentContent="" status="未发布"/>
</dataset>以下是我的ddl表
-- Table "news" DDLCREATE TABLE `news` (
`id` varchar(32) NOT NULL,
`type` varchar(50) DEFAULT NULL,
`title` varchar(100) DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
`source` varchar(50) DEFAULT NULL,
`keyword` varchar(50) DEFAULT NULL,
`compositionDate` date DEFAULT NULL,
`publishDate` date DEFAULT NULL,
`readCount` int(11) DEFAULT NULL,
`attachmentName` varchar(50) DEFAULT NULL,
`attachmentContent` longblob,
`content` mediumtext,
`status` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
以下是我的程序代码package org.ch.db;import java.io.File;import javax.sql.DataSource;import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.dbunit.DataSourceBasedDBTestCase;
import org.dbunit.IDatabaseTester;
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.ext.mysql.MySqlConnection;
import org.dbunit.operation.DatabaseOperation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/**
* Dao单元测试基类
*
* @version 2009-6-5
* @author Rongjun Wang
* @since 1.1
*/
public abstract class AbstractDaoUnitTestCase extends DataSourceBasedDBTestCase {
protected Logger log = LogManager.getLogger(this.getClass().getName()); private static String testXMLResPath = "src/test/org/ch/db/data/";
private static ApplicationContext ctx;
private static DataSource dataSource;
// private static String driverName = "com.mysql.jdbc.Driver";
// private static String dburl = "jdbc:mysql://192.168.60.123/itil-test";
// private static String username = "ITIL-TEST";
// private static String pwd = "111111"; public AbstractDaoUnitTestCase() {
initialize();
}
private static void initialize() {
//ctx只在第一次实例化的时候创建
if (ctx == null) {
String[] paths = {"classpath:datasource/test-applicationContext.xml",
"classpath:datasource/test-datasource-mysql.xml",
"classpath:dao/test-news-hibernate-dao.xml"
};
ctx = new ClassPathXmlApplicationContext(paths);
}
if (dataSource == null) {
dataSource = (DataSource) ctx.getBean("dataSource");
}
} @Override
protected IDatabaseConnection getConnection() throws Exception {
IDatabaseTester dbTester = newDatabaseTester();
IDatabaseConnection con = dbTester.getConnection();
IDatabaseConnection connection = new MySqlConnection(con.getConnection(), null);
// Class.forName(driverName);
// Connection con = DriverManager.getConnection(dburl, username, pwd);
// IDatabaseConnection connection = new MySqlConnection(con, null);
return connection;
}
/**
* 通过文件名,得到FlatXmlDataSet实例
*
* @param filename 准备数据xml文件名
* @return
* @throws Exception
*/
public IDataSet getDataSet(String filename) throws Exception {
return new FlatXmlDataSet(new File(testXMLResPath + filename), false);
}
@Override
protected DatabaseOperation getTearDownOperation() throws Exception {
return DatabaseOperation.DELETE_ALL;
}
public String getTestXMLResPath() {
return testXMLResPath;
} public ApplicationContext getCtx() {
return ctx;
} @Override
public DataSource getDataSource() {
return dataSource;
} public void setTestXMLResPath(String xmlPath) {
testXMLResPath = xmlPath;
} public void setDataSource(DataSource dataSource) {
AbstractDaoUnitTestCase.dataSource = dataSource;
}
public ITable getTable(String tableName, String condition) throws Exception {
String sql = null;
if (condition != null && condition.length() > 0) {
sql = "select * from " + tableName + " " + condition;
}
QueryDataSet actualDataSet = new QueryDataSet(getConnection());
actualDataSet.addTable(tableName, sql);
return actualDataSet.getTable(tableName);
}
public ITable getTableBySQL(String tableName, String sql) throws Exception {
QueryDataSet actualDataSet = new QueryDataSet(getConnection());
actualDataSet.addTable(tableName, sql);
return actualDataSet.getTable(tableName);
}
}
package org.ch.db.dao;import ch.dao.hibernateImpl.news.DateUtil;
import org.ch.db.AbstractDaoUnitTestCase;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.junit.Assert;import ch.dao.inf.news.ChINewsDao;
import ch.entity.News;public class TestNews extends AbstractDaoUnitTestCase {
private IDataSet xmlDataSet;
private ChINewsDao newsDao;
private String tableName = "news";
private ITable newsTable = null;
@Override
protected IDataSet getDataSet() throws Exception {
xmlDataSet = this.getDataSet("news.xml");
newsTable = xmlDataSet.getTable(tableName);
return xmlDataSet;
}
public TestNews() {
this.newsDao = (ChINewsDao) getCtx().getBean("newsDao");
}
//~test method ==============================================
public void testInsertNews() throws Exception {
News news = new News();
String newsId = (String) newsTable.getValue(0, "id");
news.setPublishDate(DateUtil.getCurrentDateTime());
news.setType("平台新闻");
news.setTitle("wet");
news.setId(newsId);
//operation
boolean success = newsDao.insertNews(news);
//assert
Assert.assertTrue(success);
Assert.assertNotNull(news.getId());
}}请问大家我应该修改哪里?
org.dbunit.dataset.NoSuchColumnException: NEWS.ID - (Non-uppercase input column: id) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
at org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:128)
at org.dbunit.operation.AbstractOperation.getOperationMetaData(AbstractOperation.java:89)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:140)
at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:79)
at org.dbunit.AbstractDatabaseTester.executeOperation(AbstractDatabaseTester.java:155)
at org.dbunit.AbstractDatabaseTester.onSetup(AbstractDatabaseTester.java:77)
at org.dbunit.DatabaseTestCase.setUp(DatabaseTestCase.java:134)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
以下是我的准备数据
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<news id="4028bcf0230877e40123087951b80001" type="平台新闻" title="yt" author="ghj" source="yfgjh" keyword="fd" compositionDate="2009-08-05" publishDate="2009-08-27" readCount="657" attachmentName="1.JPG" attachmentContent="" status="未发布"/>
</dataset>以下是我的ddl表
-- Table "news" DDLCREATE TABLE `news` (
`id` varchar(32) NOT NULL,
`type` varchar(50) DEFAULT NULL,
`title` varchar(100) DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
`source` varchar(50) DEFAULT NULL,
`keyword` varchar(50) DEFAULT NULL,
`compositionDate` date DEFAULT NULL,
`publishDate` date DEFAULT NULL,
`readCount` int(11) DEFAULT NULL,
`attachmentName` varchar(50) DEFAULT NULL,
`attachmentContent` longblob,
`content` mediumtext,
`status` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
以下是我的程序代码package org.ch.db;import java.io.File;import javax.sql.DataSource;import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.dbunit.DataSourceBasedDBTestCase;
import org.dbunit.IDatabaseTester;
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.ext.mysql.MySqlConnection;
import org.dbunit.operation.DatabaseOperation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/**
* Dao单元测试基类
*
* @version 2009-6-5
* @author Rongjun Wang
* @since 1.1
*/
public abstract class AbstractDaoUnitTestCase extends DataSourceBasedDBTestCase {
protected Logger log = LogManager.getLogger(this.getClass().getName()); private static String testXMLResPath = "src/test/org/ch/db/data/";
private static ApplicationContext ctx;
private static DataSource dataSource;
// private static String driverName = "com.mysql.jdbc.Driver";
// private static String dburl = "jdbc:mysql://192.168.60.123/itil-test";
// private static String username = "ITIL-TEST";
// private static String pwd = "111111"; public AbstractDaoUnitTestCase() {
initialize();
}
private static void initialize() {
//ctx只在第一次实例化的时候创建
if (ctx == null) {
String[] paths = {"classpath:datasource/test-applicationContext.xml",
"classpath:datasource/test-datasource-mysql.xml",
"classpath:dao/test-news-hibernate-dao.xml"
};
ctx = new ClassPathXmlApplicationContext(paths);
}
if (dataSource == null) {
dataSource = (DataSource) ctx.getBean("dataSource");
}
} @Override
protected IDatabaseConnection getConnection() throws Exception {
IDatabaseTester dbTester = newDatabaseTester();
IDatabaseConnection con = dbTester.getConnection();
IDatabaseConnection connection = new MySqlConnection(con.getConnection(), null);
// Class.forName(driverName);
// Connection con = DriverManager.getConnection(dburl, username, pwd);
// IDatabaseConnection connection = new MySqlConnection(con, null);
return connection;
}
/**
* 通过文件名,得到FlatXmlDataSet实例
*
* @param filename 准备数据xml文件名
* @return
* @throws Exception
*/
public IDataSet getDataSet(String filename) throws Exception {
return new FlatXmlDataSet(new File(testXMLResPath + filename), false);
}
@Override
protected DatabaseOperation getTearDownOperation() throws Exception {
return DatabaseOperation.DELETE_ALL;
}
public String getTestXMLResPath() {
return testXMLResPath;
} public ApplicationContext getCtx() {
return ctx;
} @Override
public DataSource getDataSource() {
return dataSource;
} public void setTestXMLResPath(String xmlPath) {
testXMLResPath = xmlPath;
} public void setDataSource(DataSource dataSource) {
AbstractDaoUnitTestCase.dataSource = dataSource;
}
public ITable getTable(String tableName, String condition) throws Exception {
String sql = null;
if (condition != null && condition.length() > 0) {
sql = "select * from " + tableName + " " + condition;
}
QueryDataSet actualDataSet = new QueryDataSet(getConnection());
actualDataSet.addTable(tableName, sql);
return actualDataSet.getTable(tableName);
}
public ITable getTableBySQL(String tableName, String sql) throws Exception {
QueryDataSet actualDataSet = new QueryDataSet(getConnection());
actualDataSet.addTable(tableName, sql);
return actualDataSet.getTable(tableName);
}
}
package org.ch.db.dao;import ch.dao.hibernateImpl.news.DateUtil;
import org.ch.db.AbstractDaoUnitTestCase;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.junit.Assert;import ch.dao.inf.news.ChINewsDao;
import ch.entity.News;public class TestNews extends AbstractDaoUnitTestCase {
private IDataSet xmlDataSet;
private ChINewsDao newsDao;
private String tableName = "news";
private ITable newsTable = null;
@Override
protected IDataSet getDataSet() throws Exception {
xmlDataSet = this.getDataSet("news.xml");
newsTable = xmlDataSet.getTable(tableName);
return xmlDataSet;
}
public TestNews() {
this.newsDao = (ChINewsDao) getCtx().getBean("newsDao");
}
//~test method ==============================================
public void testInsertNews() throws Exception {
News news = new News();
String newsId = (String) newsTable.getValue(0, "id");
news.setPublishDate(DateUtil.getCurrentDateTime());
news.setType("平台新闻");
news.setTitle("wet");
news.setId(newsId);
//operation
boolean success = newsDao.insertNews(news);
//assert
Assert.assertTrue(success);
Assert.assertNotNull(news.getId());
}}请问大家我应该修改哪里?
解决方案 »
- 请教Hibernate在实际项目开发中的一些问题
- 关于一个CORBA方面的问题。
- struts2.1.7什么时候能发布?
- struts2+Hibernian+spring实现分页
- 100分求助, 关于struts2的properties文件中,使用OGNL表达式问题
- 问下sax解析xml的流程
- 如何在JSP网页中调用SQL里面的存储过程?急!!谢谢
- 请这里的高手能介绍能用IDEA来开发Struts,hibernate,JSF,Sping,WebWork等框架的开发方面的资料.有没有这方面的plug-in等等.谢谢!up有分.
- struts中一个常见的错误:cannot find bean.... ,请遇到此问题的进来领分!!!
- 问各位一个关于jboss+jbx的问题。
- Spring3.1+Hibernate3.6.9(JPA2.0)报错!求助 !!!
- 一个财务管理,怎么在原来的基础上再加上新输入的money进行更新
不是大小写的问题吗? id改成大写试试。
iDbConnection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new OracleDataTypeFactory());