junit4使用心得

没使用junit4之前,测试代码都是通过写一个main方法,在不断的new对象,调用方法来发现错误,使用junit4之后,我发现测试变得简单了,每写一个功能块就可以通过junit4来实现该功能。

那么接下来看如何使用junit4来测试方法中的代码,从而不需要写main方法,是不是非常方便。

在 JUnit4 中,测试是由 @Test 注释来识别的,以前所有版本的 JUnit 都使用命名约定和反射来定位测试,并且要继承TestCase类,使用JUnit4后,测试用例类可以不继承TestCase类,所以我们也就可以扩展被测试类了。

再次我只介绍@Test因为有它已经足够了~~~~~

1.首先我们随便创建一个简单的工程,例如

2.鼠标放在工程名上右键,点击properties

3.接着如下图

4.点击next后选取junit版本,当然是junit4,然后点击完成finish即可,然后返回到当前界面点击OK添加junit4相关jar包完成

现在可以开始使用junit4来进行测试了,这是工程下testj4.java类中的内容

package com;

import org.ietf.jgss.Oid;
import org.junit.Test;

public class testj4 {
	private int i;
	private int j;
	@Test
	public void equal() throws Exception{
		i=2;
		j=2;
		System.out.println(i==j);
	}
	@Test
	public void chufa() throws Exception{
		i=3;
		j=0;
		int z=i/j;
		System.out.println(z);
	}
}

  

鼠标放在类上右键如下,以junit test的形式来跑代码,这样就可以不需要main方法来完成了

现在我们来测试看,运行结果如下,testj4.java中第二个chufa()方法存在数学运算异常,junit4发现了出现异常所在,和控制台抛异常的方法一样

现在我们修改为正常代码再来看看

这里我只是用一个非常简单的方法来进行测试,好处在于做项目的时候,你有很多功能模块,比如说dao层连接数据库,如果有多个功能,那么用junit4好处就自然而然啦。

废话不多说上图,我利用了hibernate框架来操作数据库的存储,使用纯代码(加载驱动,建立连接,sql语句,编译sql,关闭连接)来操作数据库在此我就不赘述

工程图

数据库的t_user表

StartUp.java的代码

package com.lovo.bean;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class StartUp {

    private static SessionFactory factory;
    static {
        Configuration cfg = new Configuration();
        // 读取指定的配置文件
        cfg.configure("hibernate.cfg.xml");
        factory = cfg.buildSessionFactory();
    }

    @Test
    public void insert()throws Exception {
        UserBean user = new UserBean();
        user.setUsername("boom");
        user.setPassword("admin");
        user.setType(1);
        user.setLevel(1);
        user.setName("福尔康");
        user.setIdCard("1111111122222");
        user.setPhone("18888888888");
        user.setAddress("鸿星尔克");

        Session session = factory.openSession();
        // 开始事务
        Transaction ts = session.beginTransaction();
        session.save(user);
        // 提交事务
        ts.commit();
        // 关闭Session,释放资源这里并不是真正的关闭
        session.close();

    }

    @Test
    public void get()throws Exception {
        Session session=factory.openSession();
        Transaction ts=session.beginTransaction();
        UserBean user=(UserBean) session.get(UserBean.class,1);
        System.out.println(user.toString());
        ts.commit();
        session.close();

    }
}

开测!!!!

修改查id为29的

成功!!!!!!!!!

方便吧,不用从三层架构一层一层的测,可以降低出错率~junit4的一点学习就到这里,不深入讨论其底层是怎么做的.

时间: 2024-08-13 14:43:06

junit4使用心得的相关文章

使用eclipse利用Junit4进行程序模块的测试

一.题目简介 通过用户输入年份和月份,然后在控制台显示该年该月的日历. 二.源码的github链接. https://github.com/zhangxinn/test/blob/master/PrintCalendar 三.所设计的模块测试用例.测试结果截图 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,然后对这些功能进行单元测试. //代码 第二步,将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”,如图: 在弹出的属性窗口中,首先在左边选择“J

实训团队心得(1)

这次实训我们团队做的是J2EE项目,在这次项目中,我们需要搭建的是一个基于SSH2框架的关于学校教室资源分配的系统.在这次项目中,我第一次尝试担当项目开发团队的负责人. 由于团队是第一次进行合作,因此在各个方面都显得不太成熟,如组织.讨论等等方面.下面是自己在担当负责人的一些心得,以备后用: 1)关于团队学习 在这次项目中,团队在遇到J2EE的相关知识时,有点慌乱,因为大家都不知道应该从哪方面对J2EE这种了解过得技术进行学习.结果在项目准备阶段中,大家都是在研究J2EE的结果以及相关配置.结果

java中利用Junit4进行程序模块的测试

今天讲讲如何利用ecl中的junit4进行程序模块的测试,实现对java程序的跟踪测评. 一.题目简介 我所测试的代码是以前写过的一个小项目-----小学四则运算自动出题程序.界面做的很简单,但是基本的功能都能实现,不过程序不是很完美,有些缺陷. 二.源码的github链接. https://github.com/Tsir/ClassTest/tree/master 三.所设计的模块测试用例.测试结果截图.操作如下: 步骤1:选中测试项目文件,点击右键选中JUnit测试用例,选中JUnit4,s

mockito使用心得

前提:pom引用<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version></dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>sprin

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

参加老男孩linux培训心得

参加老男孩linux培训心得 时间如白驹过隙,已经不知不觉来到老男孩培训已经三个月了.在这三个月中我渐渐得到了成长,专业技术成长,以及为人处事之道与思想的提高. 我一共就总结以下了三点     一.思想 在我刚来老男孩的时候,老师天天上课前讲一段思想,我当时不太明白,不赶紧上课,讲这干啥呢?而且老师早一点讲完,又可以招下一批学生了,老讲思想,这不是自断财路么?随着时间的流逝,渐渐的我悟懂了点.人在那里都可以学技术,但是学会了技术没有思想,一旦来了新事物,就会接受的很慢.尤其在互联网这个圈子里,软

Linux串口IO模式的一些心得

众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样. 通常I/O操作都是有阻塞与非阻塞的两种方式. 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的IO操作 本文将它分为三种状态: 阻塞状态 超时状态 非阻塞状态 这三种状态的转换组合有这么几种: 阻塞 --> 超时 阻塞 --> 非阻塞 超时 --> 阻塞 超时 --> 非阻塞 非阻塞 --> 阻塞 我们一个一个来分析 首先在一个串口的

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (