单元测试的时候,繁琐的老是创建 持久工厂,简直受不了,于是乎,有了下面的它 ,
/**
*
* @author hesheng
* 本地测试基类,不用启动 服务器,
* 测试数据需要自己模拟
*/
public abstract class BaseTestCase {
protected EntityManagerFactory emf;
protected EntityManager entityManager;
protected static boolean isOpenDB = true;
public boolean isOpenDB() {
return isOpenDB;
}
public void setOpenDB(boolean isOpenDB) {
this.isOpenDB = isOpenDB;
}
@SuppressWarnings("unchecked")
public void beginTx() {
emf = Persistence.createEntityManagerFactory("UnitName");
entityManager = emf.createEntityManager();
System.out.println("em: " + entityManager);
entityManager.getTransaction().begin();
}
public abstract void test();
public void endTx() {
entityManager.getTransaction().commit();
entityManager.close();
emf.close();
}
public void runTest(){
if(isOpenDB){
beginTx();
}
test();
if(isOpenDB){
endTx();
}
}
}
具体实现:
public class UnitTest extends BaseTestCase {
@Override
public void test() {
//getLogResultSet();
super.setOpenDB(false); //测试 JPQL 拼写是否正确的时候,不需连接数据库,因此可以,关闭创建连接,减少时间浪费
testSql(null,null);
}
public String testSql(String logTimeStart,String logTimeEnd){
String ql = "select m.pageName,count(m) as count from table m ";
int count = 0;
if (logTimeStart != null){
//ql = ql + " and";
count ++;
ql = ql + " where m.createDate >= ?" + count;
}
if (logTimeEnd != null){
ql = ql + " and";
count ++;
ql = ql + " m.createDate <= ?" + count;
}
ql = ql + " group by m.pageName";
System.out.println("ql: "+ql);
return ql;
}
public static void main(String[] args) {
new PageViewCountActionTest().runTest(); // 启动运行类,in eclipse "run as Application"
}
分享到:
相关推荐
- 测试类:可能包含JUnit测试用例,用于验证DAO或服务层的功能。 - Web应用结构:如WEB-INF目录,包含了web.xml文件,定义了Web应用程序的部署描述符。 - 数据库脚本:创建数据库表的SQL脚本,与JPA实体类对应。 ...
8. **单元测试**:为了验证事务管理是否正确工作,通常会编写单元测试。测试中,我们可以模拟不同的场景,如正常操作、预期外的异常以及事务边界内的业务逻辑,以此验证事务的隔离性和一致性。 综上所述,"Spring...
在项目"BookCreation_japand_JavaJPA_saidyw7_"中,开发者可能还使用了其他技术,如Spring Boot来简化项目的初始化和配置,或者使用JUnit进行单元测试,确保代码的正确性。同时,Maven或Gradle作为构建工具,管理...
在本案例中,Spring4可能被用来进一步管理Bean的生命周期,增强代码的可测试性,并且可能与JPA和EJB进行集成,提供更灵活的服务调用方式。 【Servlet】是一种Java API,用于创建动态Web应用程序。在描述中提到,...
我们可以在`application-test.properties`中配置H2,并在测试类中使用`@Sql`注解来执行SQL脚本,初始化测试数据。 本例子中的项目使用MyEclipse创建,这是一款集成开发环境,支持Maven构建。这意味着项目结构遵循...
1. **src/main/java**: 包含主应用代码,包括Spring Boot的启动类、配置类以及数据访问层(DAO)、服务层(Service)和控制器层(Controller)。 2. **src/main/resources**: 存放配置文件,如application....
2. 配置JPA的persistence.xml文件,指定数据库连接信息和使用的持久化单元。 3. 使用Hibernate的Session或EntityManager进行数据的CRUD(创建、读取、更新、删除)操作。 4. 利用Seam Remoting在客户端和服务端之间...
JPA通过在Java类上使用注解或XML配置来定义对象与数据库表之间的映射关系,极大地简化了数据库访问。 在这个名为"JPA_002.zip"的压缩包中,我们可以看到与JPA相关的学习资源,这些资源对于理解和实践JPA非常有帮助...
7. **配置JPA和Hibernate**:创建实体类,配置数据源,编写persistence.xml文件来指定JPA供应商和数据源。 8. **测试连接**:编写简单的测试用例,确保能够成功连接到数据库并执行CRUD操作。 9. **运行应用**:在...
JPA通过注解来定义实体类和它们与数据库表的映射。例如,创建一个简单的用户实体类: ```java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence....
为了测试这个配置,你可以创建一个`Main`类,通过EntityManager进行CRUD操作,展示一对多双向关联的增删改查功能。确保在项目中包含所有必要的JPA依赖,如Hibernate,以及相关的jar包。 总的来说,理解并正确实现...
**Jpa_Basic: Jpa_Basic Inflearn Practice** 在本文中,我们将深入探讨Java ...通过这个实践,你可以掌握如何定义实体、使用Repository、编写服务层和控制器,以及进行单元测试,这些都是Java Web开发中的核心技能。
3. **自动配置**:解析 Spring Boot 如何根据类路径和属性来自动配置你的应用。 4. **起步依赖**:介绍如何使用起步依赖快速添加特定的功能模块。 5. **内嵌Web服务器**:阐述如何在应用中内嵌Web服务器,并配置相关...
综上所述,"spring+jpa+全局异常+单元测试"这个主题涵盖了Java后端开发中的核心技术和最佳实践。通过有效地整合这些技术,我们可以构建出健壮、易于维护的业务系统,并通过严格的测试确保其质量。
**JPA测试详解** 在Java开发中,Java Persistence API(JPA)被广泛用于对象关系映射(ORM),它提供了一种将Java类与数据库表进行绑定的方式,从而简化了数据库操作。本篇将深入探讨JPA的核心概念、使用方法以及在...
这一标准的核心目标在于为POJO(Plain Old Java Object)提供统一的持久化规范,反映了业界对于脱离容器独立运行、便于开发和测试的趋势的认可。当前,包括Hibernate 3.2、TopLink 10.1.3及OpenJPA在内的多种ORM框架...
8. **运行与测试**:讲解如何运行Spring Boot应用,以及如何编写单元测试或集成测试来验证Spring JPA的功能。 9. **查询增强**:除了基础的CRUD操作,Spring Data JPA还支持自定义查询方法,通过方法名自动转换为...
5. **集成测试**: 为了确保JPA的正确性,源代码可能包含了一些测试用例,展示了如何在测试环境中设置和使用JPA。 通过对这些源代码的深入理解和实践,开发者可以更好地掌握JPA的使用,以及如何根据项目需求选择合适...