java – 如何在JUnit测试中初始化数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在JUnit测试中初始化数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2831字,纯文字阅读大概需要5分钟。
内容图文
我的任务是为服务层编写压力(负载)测试.主要是CRUD操作.我们使用JUnit作为测试框架,使用JUnitPerf构建负载测试,使用Spring注入服务bean,使用hibernate访问数据库.
压力测试类似于:读取实体 – 更新实体 – 保存 – 再次读取和比较.但是为了构建测试,我需要在数据库中使用一些测试数据,因此我需要在测试之前创建这些数据并在之后删除它.所需的流程:创建测试数据 – 在多个线程中运行测试 – 在所有线程完成执行后删除测试数据.有很多测试数据,所以使用一些测试转储sql文件来获取它会好得多.所以我需要的是:将数据从文件加载到数据库 – 执行压力测试 – 删除所有加载的数据.
我使用SchemaExport加载数据.我面临以下例外:
org.hibernate.HibernateException: No local DataSource found for configuration - 'dataSource' property must be set on LocalSessionFactoryBean
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.configure(LocalDataSourceConnectionProvider.java:49)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:27)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:180)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:133)
.................
这是我的SessionFactory bean的定义:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.dialect}
hibernate.show.sql=${hibernate.show.sql}
</value>
</property>
<property name="annotatedClasses">
<list>
...
my classes
...
</list>
</property>
</bean>
我按以下方式启动测试:
@BeforeClass
public static void createTestData() throws AccessDeniedException, AccountException, SQLException {
ClassPathXmlApplicationContext appCtx = new ClassPathXmlApplicationContext("classpath:/applicationContext_test.xml");
AnnotationSessionFactoryBean sessionFactoryBean = (AnnotationSessionFactoryBean) appCtx.getBean("sessionFactory");
org.hibernate.cfg.Configuration configuration = sessionFactoryBean.getConfiguration();
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.drop(false, true);
schemaExport.create(false, true);
if (schemaExport.getExceptions().size() > 0) {
for (Object exception : schemaExport.getExceptions()) {
if (exception instanceof Throwable) {
((Throwable) exception).printStackTrace();
}
}
throw new IllegalStateException();
}
}
我提到我需要进行负载测试以明确我不能在测试块中包含数据初始化.
我有两个问题:
1)如何在加载测试之前初始化数据并在之后将其删除?
2)我是正确的吗?或者也许我应该转用另一种技术进行压力测试?
解决方法:
您可以使用DBUnit为您执行数据加载.或者使用Unitils将DBUnit与Spring和Hibernate集成在一起.
问候,
内容总结
以上是互联网集市为您收集整理的java – 如何在JUnit测试中初始化数据全部内容,希望文章能够帮你解决java – 如何在JUnit测试中初始化数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。