阅读更多

6顶
0踩

Web前端

原创新闻 Unitils 1.1支持JPA

2008-08-29 12:00 by 资深编辑 ╱/罒呍唲 评论(1) 有4698人浏览
JPA
Unitils 让您在使用JUnitTestNG 是能够更轻松的维护单元和集成测试。它像如今的DbUnit

EasyMock一样流行,并整合了SpringHibernate 。Unitils运用可好的方法和测试指南,这个思想是作者基于对企业项目的经验。

在1.1的版本中,为了能够使用Java Persistence API(JPA)支持添加测试代码。这一类似的方法已经可以用于Hibernate,下面我们来举些例子。

假设我们有一个PersonPepository接口和JPA的基础实现。该Personrepository接口有一个方法 findByLastName,实现代码如下:

public class PersonRepositoryImpl implements PersonRepository {

    @PersistenceContext
    private EntityManager entityManager;

    public List<Person> findByLastName(String lastName) {
        List<Person> persons = entityManager.createQuery("find person from 

Person person where person.lastName = :lastName").getResultList();
        return persons;
    }
}

接下来的测试方法:
@JpaEntityManagerFactory(persistenceUnit = "test", configFile = "META-

INF/persistence-test.xml")
@Transactional(TransactionMode.COMMIT)
@DataSet
public class PersonRepositoryImplTest extends UnitilsJUnit4 {
    
    @PersistenceContext
    EntityManager entityManager;
    
    PersonRepository personRepository = new PersonRepositoryImpl();
    
    @Before
    public void init() {
        JpaUnitils.injectJpaResourcesInto(personRepository);
    }
    
    @Test
    public void testSearchByLastName() {
        List<Person> result = personRepository.findByLastName("Doe"));        
        ReflectionAssert.assertPropertyLenEquals("firstName", Arrays.asList

("John", "Jane"), result);    
    }
}


你会发现,这项测试扩展了 UnitilsJUnit4。这可以确保在运行测试中,unitils可以找到执行测试和检查测试,要求执行的的任务。我们为JUnit 3.x版本和TestNG也提供了类似的基类,UnitilsJUnit3和UnitilsTestNG。

JPA配置:
@JpaEntityManagerFactory注释告诉我们,如何找到JPA配置文件。如果是Hibernate的配置,可以参考以下的persistence配置文件:

<persistence xmlns="http://java.sun.com/xml/ns/persistence">
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence "
   version="1.0">
   
   <persistence-unit name="test">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <properties>
         <property name="hibernate.dialect" 

value="org.hibernate.dialect.HSQLDialect"/>
         <property name="hibernate.show_sql" value="true"/>
      </properties>
   </persistence-unit>
</persistence>


Unitils提供了一个简单的方法来单独共享项目和本地配置:常见配置是储存在一个文件unitils.properties在classpath下,开发特定的配置在本地的文件下,最好是储存在用户的目录下。我们建议开发者提供一个测试数据库(或架构),避免每个数据库的演变,这样你可以按照自己的步调来进行。

这不是唯一可行的配置-EntityManagerFactory:如果你使用的Spring,你可以利用EntityManagerFactory在您的测试中设定一个Spring的配置存档。查看更多的信息

其他Unitils的特点Unitils还提供了很多:注释测试与@Transactional,每一个测试可以进行回滚,一个强大的系统来保证每一个开发的测试数据库。

如果您想了解更多有关Unitils,可点击[url= http://www.unitils.org/tutorial.html]tutorial[/url]和[url= http://www.unitils.org/cookbook.html]cookbook[/url]。有什么问题或意见大家可以进行讨论。

如果做单元测试,尤其是SSH结构的,Unitils可以说是不二之选。


6
0
评论 共 1 条 请登录后发表评论
1 楼 andyao 2008-09-01 09:45
1.1rc的时候就已经提供了.

unitils确实是非常好的单元测试工具.

数据管理, mock方面都很方便.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 位图缩放,可对bmp位图任意放大缩小宽和高

    可以对bmp位图进行任意 宽和高的放大和缩小,不失真, 此源码是从易语言直接翻译过来,自己试验挺满意

  • BMP位图文件结构及平滑缩放

    导读:   -- 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时,失真严重,在低颜色位数的设备上显示高颜色位数的图形图形时失真大。本文采用视频函数显示BMP位图,可以消除以上的缺点。   ---- 一、BMP文件结构   ---- 1. BMP文件组成   ---- BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。   ---- 2. BMP文件头   ---- B

  • C++——bmp图像的平滑、锐化(拉普拉斯+sobel+prewitt+Roberts Cross operator)

    本文实现了RGB三通道图像及灰度图像的平滑、锐化处理。在开始之前,我们先对平滑及锐化的概念进行一个简单的了解:1、平滑       图像平滑是指受传感器和大气等因素的影响,遥感图像上会出现某些亮度变化过大的区域,或出现一些亮点(也称噪声)。这种为了抑制噪声,使图像亮度趋于平缓的处理方法就是图像平滑。图像平滑实际上是低通滤波,平滑过程会导致图像边缘模糊化。常用的平滑处理方法有三种:(1) Box模板...

  • bmp图片文件的操作 旋转、翻转、放大缩小

    bmp文件 由三部分组成:文件头,位图信息头,RGB像素数据。 拿24位bmp图片举例,读取文件fread就可以,开始读取sizeof(BITMAPFILEHEADER)长的数据,再读取sizeof(BITMAPINFOHEADER)长的数据,里面有位图的原始高度和宽,然后读取(3*原始宽度*原始高度)长的原始RGB数据到内存,这样对那块数据操作,就能实现旋转,翻转,放大缩小操作了,关键是写出原

  • 西电C语言程序设计实验之位图图像文件缩放

    位图图像文件缩放 编写一个程序,可以在命令行输入参数,完成指定文件的缩放,并存储到新文件,命令行参数如下: zoom file1.bmp 200 file2.bmp 第一个参数为可执行程序名称,第二个参数为原始图像文件名,第三个参数为缩放比例(百分比),第四个参数为新文件名。 声明: 由于window上主要是24位图和256色8位图居多,所以这里的程序只编写了针对于这两种图片的算法,如果想实现其他位图的缩放,也很简单,只需要在一些位置进行对应的修改。 算法分析: 1.最邻近插值算法 很简单,就是对新图中的每

  • bmp 缩放代码(BMP位图任意放大 和缩小)

    前几天碰上需要对bmp位图进行缩放的功能, 调用API函数,虽然能实现位图缩放,但是对有放大的效果好,缩小会造成失真,图像上有花点,让人难以接受 ,因为本人以前学易语言,易语言有一段代码,对bmp图像缩放效果非常 好, 昨天抽空,把它翻译成c++代码了,经验证,非常 好用,帖上代码: 这一段是对宽度进行缩放: ? 1 2 3 4 5 6 7 8

  • Bitmap与Matrix , 位图剪裁、缩放、平移、旋转、倾斜

    Android开发中常使用位图(Bitmap)进行图像编辑创建位图,width表示要创建的位图的宽度,height表示要创建的位图的高度,config表示图片的配置信息。使用颜色数组创建一个指定宽高的位图,颜色数组的个数为width*height,config可为。使用源位图创建一个新的位图。从源位图的指定坐标开始剪切一个指定宽高的图像,用于创建新的位图。按照从源位图的的图像,用于创建新的位图,filter表示是否将新位图的像素配置设置为与源位图相同。

  • 位图的平滑、高斯模糊的源码

    实现bmp位图文件的平滑、高斯模糊等操作的源码

  • vc实现bmp文件的高斯平滑处理

    vc实现对bmp图片的高斯平滑处理,对bmp的每一个像素进行卷积得到

  • 数字图像处理,高斯平滑滤波的C++实现

    以另外一个滤波器而言----均值滤波器, 就是说某像素的颜色, 由以其为中心的九宫格的像素平均值来决定. 在这个基础上又发展成了带权的“平均”滤波器, 这里的高斯平滑或者说滤波器就是这样一种带权(通常我们认为距离要代替的点像素的作用大一些)的“平均”滤波器. 那么这些权重如何分布呢? 我们先来看几个经典的模板例子:

  • 图像平滑

    图像中的噪声 图像噪声的分类 图像噪声的数学模型 空间域平滑滤波 一均值滤波 二中值滤波 三均值中值滤波器的改进 多图像平均法 频域低通滤波 1理想低通滤波器 2巴特沃斯低通滤波器 3指数低通滤波器在图像的获取、传输和存贮过程中常常会受到各种噪声的干扰和影响而使图像降质,有必要对图像进行消除噪声处理。 通常把抑制或消除图像中存在的噪声而改善图像质量的过程称为图像的平滑。图像的平滑处理方法由空域法和

  • 一个简单的变换——图像的平滑处理

    一个简单的变换——图像的平滑处理

  • C语言位图图像文件缩放(西电C程序作业3)

    3、位图图像文件缩放 涉及知识点:文件读写、结构体定义、内存管理、基本图像处理算法、命令行参数 要求: 编写一个程序,可以在命令行输入参数,完成指定文件的缩放,并存储到新文件,命令行参数如下 zoom file1.bmp 200 file2.bmp 第一个参数为可执行程序名称,第二个参数为原始图像文件名,第三个参数为缩放比例(百分比),第四个参数为新文件名 bmp文件格式详解 https://blog.csdn.net/o_sun_o/article/details/8351037 C语言#ragma pa

  • 位图Bitmap缩放两种方法

    一、位图缩放采用现成的类和方法举例: //从本地加载位图,userPic.jpg位图存储在本地SD卡上,路径为/sdcard//DCIM/userPic.jpg private void loadPicFromLocal(){ String status = Environment.getExternalStorageState(); if (status.equals(Environment....

  • [图像处理]图像的平滑处理

    空间滤波:某些邻域处理工作是操作邻域的图像像素值以及相应的雨邻域有相同维数的子图像的值,这些子图像可以被称为滤波器、掩摸、核。在滤波器子图像中的值使系数值,而不是像素值。线性平滑:对于每一个像素点的灰度值用它的邻域值来代替,其邻域的大小为:N*N,N一般取奇数。线性平滑虽然降低了噪声,但同时也模糊了图像的边缘和细节,这是这一类滤波器的通病。非线性平滑:不对所有像素都用他的邻域平均值来代替,而是取一...

Global site tag (gtag.js) - Google Analytics