`
baowp
  • 浏览: 98778 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

junit单元测试1: 数据库接口测试

    博客分类:
  • java
阅读更多

开发应用程序,为了保证底层的代码质量,使应用容器启动后测试能够一次性通过,单元测试必不可少。

单测一般要测每一个service接口方法,这里以目前最流行的开源测试框架junit举个例子。

 

在工程的src/main/java下有个BookService interface

   

public interface BookService {

    int insert(BookEntity book);
}

 

 

在工程的src/test/java下同包目录中写一个BookServiceTest

package com.github.baowp.domain.service;

import com.github.baowp.domain.entity.BookEntity;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

/**
 * Created with IntelliJ IDEA.
 * User: baowp
 * Date: 11/27/13
 * Time: 3:06 PM
 * To change this template use File | Settings | File Templates.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "BookServiceTest-context.xml")//如果配置文件在同包名下,locations可以不声明

//以下两个注解与继承AbstractTransactionalJUnit4SpringContextTests等效,用于数据库事务回滚,继承后可不声明
@Transactional
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class})
public class BookServiceTest /*extends AbstractTransactionalJUnit4SpringContextTests*/ {

    @Resource
    private BookService bookService;

    @Test
    @Rollback(false)//表示不回滚事务,默认为true,该注解不写也默认回滚
    public void testInsert() {
        BookEntity book = new BookEntity();
        book.setTitle("title");
        book.setPrice(1.1f);
        int flag = bookService.insert(book);
        assertTrue(flag == 1);
        assertNotNull(book.getId());
    }
}

 

pom.xml引入

 

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>${spring.version}</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
		<scope>test</scope>
	</dependency>

 

    这是一个简单的单元测试例子,一般用于直接的数据库操作测试,但如果一个service的方法非常复杂,里面还有涉及调用外部应用,这时就必须在单测方法先预设这种调用的返回值,也就是mock该接口。

分享到:
评论

相关推荐

    junit单元测试jar包集

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

    Junit单元测试内部机制解析

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

    junit单元测试及Mock应用,超详细的PPT实战应用

    JUnit是Java编程语言中最流行的单元测试框架,它提供了注解、断言和测试套件等机制,使得编写和运行测试变得简单。JUnit5是当前的最新版本,支持Maven项目管理,并且被广泛集成在现代Java开发环境中,如Spring Boot...

    junit单元测试实验报告

    一、 试验目标:掌握白盒测试方法,熟练应用junit测试工具进行单元测试,并进行代码覆盖检验。 二、 试验要求:掌握系统测试基础原理,依据白盒法设计测试用例,并撰写单元测试计划书。依据每个测试用例,编写基础...

    Java典型应用彻查1000例第四卷:数据库应用基础(源码+PPT+习题).rar

    13. JUnit与Mock测试:在开发过程中,使用JUnit进行单元测试,结合Mockito等工具模拟数据库操作,确保代码质量。 通过《Java典型应用彻查1000例第四卷:数据库应用基础》的学习,读者不仅可以掌握上述知识点,还能...

    如何对数据库进行测试.doc

    * 集成测试:对数据库的多个组件进行测试,如数据库的接口测试。 * 系统测试:对整个数据库系统进行测试,以确保数据库的正确性和安全性。 * 功能测试:对数据库的功能进行测试,如数据的添加、删除、修改等操作。 ...

    数据库框架ormlite和单元测试框架junit的使用

    结合ORMLite和JUnit,开发者可以高效地测试数据库操作,确保数据存取的正确性和稳定性。在实际项目中,这将有助于减少bug,提高软件的可靠性和可维护性。通过熟练掌握这两项技术,开发者可以更自信地处理复杂的...

    junit测试JDBC错误源代码

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

    基于java+testng+数据库的接口自动化测试.zip

    在接口自动化测试领域,Java、...综上所述,这个压缩包可能包含了一个完整的Java+TestNG+数据库接口自动化测试框架的示例,帮助开发者高效地进行接口测试。通过学习和理解这些技术,可以提升测试效率,确保软件质量。

    Junit测试 简单用例

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

    使用junit进行单元测试, 包含项目源码及笔记

    3. **快速测试**:单元测试应设计得快速执行,以便频繁运行。 4. **可读性**:测试方法名应清晰地描述测试的目的,测试代码应简洁明了,易于理解。 5. **避免过度测试**:不要对简单或明显无误的代码编写过多测试...

    Struts2SpringUnitDemo单元测试

    3. **单元测试**:单元测试是软件开发过程中的重要环节,它验证单个代码单元(如方法或类)的功能是否符合预期。JUnit是Java中最常用的单元测试框架,可以用于编写和运行测试用例。在Struts2SpringUnitDemo中,可能...

    单元测试之道Java版使用JUnit

    《单元测试之道Java版:使用JUnit》是一本深入浅出的指南,专为Java开发者揭示单元测试的重要性和实践方法。本书以JUnit作为主要工具,详细介绍了如何在Java开发过程中有效地进行单元测试,确保代码的质量和稳定性。...

    junit-4.10单元测试

    8. **扩展性**:JUnit 4.10 的设计鼓励扩展,开发者可以通过实现 `org.junit.runner.RunWith` 接口创建自定义的测试框架,以适应特定的测试需求。 9. **Hamcrest匹配器**:JUnit 4.10 集成了Hamcrest库,提供了一套...

    Junit参数化测试源代码

    在传统的JUnit测试中,每个测试用例通常对应一个固定的数据集,而在参数化测试中,数据可以从外部数据源(如数组、CSV文件或XML文件)动态获取。 ### 使用方法 1. **引入依赖**:首先,确保你的项目已经包含了...

    单元测试规范详细说明

    1. **接口测试**:在进行功能测试时,应首先针对接口进行测试。接口的实现代码可以在单元测试通过后再移到源码包中。 2. **简单的测试用例**:在功能测试阶段,无需设计过于复杂的测试用例。只需根据设计文档中的...

    探索JUnit4扩展:深入Rule

    JUnit是Java开发者最常用的单元测试框架,它极大地简化了测试代码的编写。在JUnit4中,引入了一个强大的特性——Rule,这使得测试更加灵活且可定制化。本文将深入探讨Rule的概念、用法以及如何通过Rule实现自定义的...

    软件单元测试讲义ppt

    接口测试通常用于验证API、数据库连接或其他系统间的通信,而单元测试则聚焦于代码模块的内部逻辑。 七、持续集成与持续测试 在现代敏捷开发中,单元测试是持续集成和持续测试流程的关键部分。通过持续集成服务器...

    探索JUnit4扩展:使用Rule

    标题“探索JUnit4扩展:使用Rule”涉及到的是Java单元测试框架JUnit的一个高级特性,即`@Rule`。在Java开发中,单元测试是确保代码质量、可维护性和可靠性的重要手段,而JUnit作为最流行的Java单元测试框架之一,...

Global site tag (gtag.js) - Google Analytics