package com.test.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.BeforeClass;
import org.junit.Test;
import com.test.bean.Person;
public class PersonDBTest
{
private static PersonDB personDB;
@BeforeClass
public static void init()
{
personDB = new PersonDB();
}
@Test
public void testInsert()
{
Person person = new Person();
person.setUsername("lisi");
person.setPassword("654321");
person.setAge(20);
personDB.insert(person);
Person person2 = this.getPersonByMaxId();
this.comparePersons(person, person2);
personDB.removeById(person2.getId());
}
@Test
public void testUpdate()
{
Person person = new Person();
person.setUsername("zhangsan");
person.setPassword("langsin");
person.setAge(40);
// 1. insert
personDB.insert(person);
// 2. get
Person person2 = this.getPersonByMaxId();
this.comparePersons(person, person2);
person2.setUsername("wangwu");
person2.setPassword("abcdefg");
person2.setAge(90);
// 3. update. what we want to test
personDB.update(person2);
// 4. get
Person person3 = this.getPersonByMaxId();
this.comparePersons(person2, person3);
personDB.removeById(person3.getId());
}
@Test
public void testGetById()
{
Person person = new Person();
person.setUsername("zhangsan");
person.setPassword("123456");
person.setAge(40);
personDB.insert(person);
int maxId = this.getMaxId();
Person person2 = personDB.getById(maxId);
this.comparePersons(person, person2);
personDB.removeById(maxId);
}
@Test
public void testRemoveById()
{
Person person = new Person();
person.setUsername("zhangsan");
person.setPassword("123456");
person.setAge(40);
personDB.insert(person);
int maxId = this.getMaxId();
personDB.removeById(maxId);
Person person2 = personDB.getById(maxId);
assertNull(person2);
}
private int getMaxId()
{
Connection conn = null;
int maxId = 0;
try
{
conn = Conn.getConnection();
String sql = "select max(id) as maxId from person";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if (rs.next())
{
maxId = rs.getInt("maxId");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (null != conn)
{
conn.close();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return maxId;
}
private Person getPersonByMaxId()
{
Connection conn = null;
Person person = null;
try
{
conn = Conn.getConnection();
String sql = "select max(id) as maxId from person";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
int maxId = 0;
if (rs.next())
{
maxId = rs.getInt("maxId");
}
String sql2 = "select * from person where id = " + maxId;
ps = conn.prepareStatement(sql2);
rs = ps.executeQuery();
if (rs.next())
{
person = new Person();
person.setId(maxId);
person.setUsername(rs.getString("username"));
person.setPassword(rs.getString("password"));
person.setAge(rs.getInt("age"));
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (null != conn)
{
conn.close();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return person;
}
// helper method
private void comparePersons(Person person1, Person person2)
{
assertEquals(person1.getUsername(), person2.getUsername());
assertEquals(person1.getPassword(), person2.getPassword());
assertEquals(person1.getAge(), person2.getAge());
}
}
分享到:
相关推荐
本资料包"junit4测试数据库源码"主要涵盖了Junit4的新特性assertThat断言以及如何利用Junit4进行MySQL和Oracle两种主流数据库的增删改查操作的测试。 首先,我们来了解一下Junit4的assertThat断言。在旧版本的Junit...
本压缩包文件"javaweb中.java文件测试需要的框架(junit测试).rar"显然是为了帮助开发者理解如何在Java Web项目中使用JUnit进行测试。 **JUnit框架详解** JUnit是一个基于注解的测试框架,它的核心功能包括: 1....
例如,可以使用`@Before`初始化数据库连接,然后在`@After`中关闭连接,确保每个测试都是独立且不相互影响的。 `@Ignore`注解可用于临时跳过某个测试,可能是因为该测试目前无法通过或者需要进一步调试。`@Expected...
标题“使用junit测试ssh中的dao”涉及到的是Java开发中的单元测试技术,特别是针对SSH(Struts2、Spring、Hibernate)框架中的数据访问对象(DAO)进行测试。SSH是Java Web开发中常用的三大开源框架,它们协同工作以...
JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的...这个“junit测试.zip”文件的使用,意味着你可以轻松地在你的项目中集成单元测试框架,提升软件的开发效率和质量。
例如,JUnit用于编写测试用例,DBUnit负责数据库相关的测试,Unitils提供ORM支持和进一步的测试便利,而Mockito则用来模拟复杂的依赖关系,使得测试更加独立和可控。了解和熟练使用这些工具,对于提升软件开发效率和...
在这个“junit测试JDBC错误源代码”中,开发者遇到了一个困扰:预期在数据库中插入两条数据,但实际操作并未按预期执行。为了分析并解决这个问题,我们需要深入理解JDBC的操作流程以及JUnit如何用于测试这些操作。 ...
本实例将深入探讨Junit测试的基本用法,包括简单单元测试和综合测试的实现。 一、Junit简介 Junit是由Ernst Berg和Kent Beck共同创建的开源项目,其主要目标是提供一个易于使用的接口来编写针对Java代码的测试用例...
- 集成测试:测试数据库与其他系统组件(如应用程序)的交互。 - 压力测试:模拟大量并发用户,检查数据库的负载承受能力。 - 回归测试:在数据库更新后,确保原有的功能没有受到影响。 3. **测试工具**: - ...
**JUnit测试执行流程** JUnit的测试执行流程大致可以分为以下几个步骤: - **加载测试类**:JUnit首先识别出标记为`@RunWith`注解的测试类,如果没有使用特定的运行器,那么默认使用JUnit的运行器。 - **实例化...
在测试 `DAO` 层时,我们不希望真正地连接到数据库,而是使用模拟数据或内存数据库来避免副作用和提高测试效率。 在整合 `JUnit` 进行测试时,我们需要使用 `Spring` 的测试支持,如 `@ContextConfiguration` 注解...
总的来说,SpringMvc与JUnit的结合使用能够帮助开发者构建健壮的、可测试的应用程序。通过有效的单元测试,我们可以尽早发现潜在的问题,提高代码质量,降低维护成本。因此,掌握这种测试技巧对于任何SpringMvc...
【JDBC MySQL JUnit测试】 在Java开发中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,而MySQL是一种广泛使用的开源关系型数据库。JUnit是Java编程语言的一个单元测试框架,它使得测试代码的...
本文对 Eclipse 中建立自己的 JUnit 测试进行了详细的介绍,包括 JUnit 的基本概念、测试类型、测试命名规则、在 Eclipse 中使用 JUnit 创建测试等。通过本文,读者可以了解如何使用 JUnit 在 Eclipse 中进行测试,...
本教程将聚焦于使用Hibernate进行Junit测试,实现对DB2数据库的增删改查操作。下面,我们将详细探讨相关知识点。 首先,让我们理解Hibernate的核心概念。Hibernate是一个基于Java的开源持久化框架,它允许开发者用...
在JUnit测试中,我们可能会使用Hibernate的Session工厂创建临时数据库连接,进行数据操作,并在测试后清理。 4. **测试数据**:在SSH测试中,通常需要为数据库创建测试数据。这可以通过使用HSQLDB等内存数据库,...
而JUnit是Java编程语言中广泛使用的单元测试框架,用于确保代码的质量和可靠性。MySql是广泛应用的关系型数据库,提供与Java应用程序的连接。在本文中,我们将探讨如何将这些组件结合使用,以及解决可能遇到的问题。...
1. **注解(Annotations)**:Junit4使用注解简化了测试的声明。例如,`@Test`注解标记测试方法,`@Before`和`@After`分别用于定义在每个测试方法之前和之后执行的设置和清理操作。 2. **断言(Assertions)**:断言...