`

用Junit测试数据库

阅读更多

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测试数据库源码"主要涵盖了Junit4的新特性assertThat断言以及如何利用Junit4进行MySQL和Oracle两种主流数据库的增删改查操作的测试。 首先,我们来了解一下Junit4的assertThat断言。在旧版本的Junit...

    javaweb中.java文件测试需要的框架(junit测试).rar

    本压缩包文件"javaweb中.java文件测试需要的框架(junit测试).rar"显然是为了帮助开发者理解如何在Java Web项目中使用JUnit进行测试。 **JUnit框架详解** JUnit是一个基于注解的测试框架,它的核心功能包括: 1....

    junit测试小例子

    例如,可以使用`@Before`初始化数据库连接,然后在`@After`中关闭连接,确保每个测试都是独立且不相互影响的。 `@Ignore`注解可用于临时跳过某个测试,可能是因为该测试目前无法通过或者需要进一步调试。`@Expected...

    使用junit测试ssh中的dao

    标题“使用junit测试ssh中的dao”涉及到的是Java开发中的单元测试技术,特别是针对SSH(Struts2、Spring、Hibernate)框架中的数据访问对象(DAO)进行测试。SSH是Java Web开发中常用的三大开源框架,它们协同工作以...

    junit测试.zip

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的...这个“junit测试.zip”文件的使用,意味着你可以轻松地在你的项目中集成单元测试框架,提升软件的开发效率和质量。

    junit单元测试jar包集

    例如,JUnit用于编写测试用例,DBUnit负责数据库相关的测试,Unitils提供ORM支持和进一步的测试便利,而Mockito则用来模拟复杂的依赖关系,使得测试更加独立和可控。了解和熟练使用这些工具,对于提升软件开发效率和...

    junit测试JDBC错误源代码

    在这个“junit测试JDBC错误源代码”中,开发者遇到了一个困扰:预期在数据库中插入两条数据,但实际操作并未按预期执行。为了分析并解决这个问题,我们需要深入理解JDBC的操作流程以及JUnit如何用于测试这些操作。 ...

    Junit测试 简单用例

    本实例将深入探讨Junit测试的基本用法,包括简单单元测试和综合测试的实现。 一、Junit简介 Junit是由Ernst Berg和Kent Beck共同创建的开源项目,其主要目标是提供一个易于使用的接口来编写针对Java代码的测试用例...

    数据库测试程序测试数据库

    - 集成测试:测试数据库与其他系统组件(如应用程序)的交互。 - 压力测试:模拟大量并发用户,检查数据库的负载承受能力。 - 回归测试:在数据库更新后,确保原有的功能没有受到影响。 3. **测试工具**: - ...

    Junit单元测试内部机制解析

    **JUnit测试执行流程** JUnit的测试执行流程大致可以分为以下几个步骤: - **加载测试类**:JUnit首先识别出标记为`@RunWith`注解的测试类,如果没有使用特定的运行器,那么默认使用JUnit的运行器。 - **实例化...

    junit测试spring,hibernate的dao层代码

    在测试 `DAO` 层时,我们不希望真正地连接到数据库,而是使用模拟数据或内存数据库来避免副作用和提高测试效率。 在整合 `JUnit` 进行测试时,我们需要使用 `Spring` 的测试支持,如 `@ContextConfiguration` 注解...

    SpringMvc单元测试Junit

    总的来说,SpringMvc与JUnit的结合使用能够帮助开发者构建健壮的、可测试的应用程序。通过有效的单元测试,我们可以尽早发现潜在的问题,提高代码质量,降低维护成本。因此,掌握这种测试技巧对于任何SpringMvc...

    JDBC mysql Junit测试

    【JDBC MySQL JUnit测试】 在Java开发中,JDBC(Java Database Connectivity)是用于与数据库交互的标准API,而MySQL是一种广泛使用的开源关系型数据库。JUnit是Java编程语言的一个单元测试框架,它使得测试代码的...

    Eclipse中建立自己的JUnit测试Java教程.doc

    本文对 Eclipse 中建立自己的 JUnit 测试进行了详细的介绍,包括 JUnit 的基本概念、测试类型、测试命名规则、在 Eclipse 中使用 JUnit 创建测试等。通过本文,读者可以了解如何使用 JUnit 在 Eclipse 中进行测试,...

    Hibernate Junit测试增删改查(DB2版本的)

    本教程将聚焦于使用Hibernate进行Junit测试,实现对DB2数据库的增删改查操作。下面,我们将详细探讨相关知识点。 首先,让我们理解Hibernate的核心概念。Hibernate是一个基于Java的开源持久化框架,它允许开发者用...

    junit测试demo

    在JUnit测试中,我们可能会使用Hibernate的Session工厂创建临时数据库连接,进行数据操作,并在测试后清理。 4. **测试数据**:在SSH测试中,通常需要为数据库创建测试数据。这可以通过使用HSQLDB等内存数据库,...

    MySql驱动MyBatis架包,JUnit架包

    而JUnit是Java编程语言中广泛使用的单元测试框架,用于确保代码的质量和可靠性。MySql是广泛应用的关系型数据库,提供与Java应用程序的连接。在本文中,我们将探讨如何将这些组件结合使用,以及解决可能遇到的问题。...

    Junit白盒测试学习文档

    1. **注解(Annotations)**:Junit4使用注解简化了测试的声明。例如,`@Test`注解标记测试方法,`@Before`和`@After`分别用于定义在每个测试方法之前和之后执行的设置和清理操作。 2. **断言(Assertions)**:断言...

Global site tag (gtag.js) - Google Analytics