zoukankan      html  css  js  c++  java
  • 三分钟掌握 JUnit3.0

         曾经公司做过一个.net的项目,在项目开发的过程中。我们採用的是分层的开发方式,大家先在一起讨论接口, 然后讨论完以后,形成文档,然后依照文档进行开发!这样就有一个问题,你必需要保证你的接口是正确的。然后才干提供给其它人使用。

    所以一定要对你写的方法进行单元測试。单元測试真的是非常方便!

        如今的公司是开发java 项目的,开发过程也和.net的开发模式是一样的,所以说单元測试也成了必需品。

    可是我们用的JUnit。

    下边就给大家介绍一下JUnit的用法。

        我们首先来建立一个项目。项目结构例如以下例如以下图所看到的!

        

        然后倒入我们须要的jar包,我用的Myeclipse 。他集成了JUnit,所以说直接加入他的jar就能够了,在项目上单击右键。选择BuildPath 然后选择Libraries, 然后选择JUnit,他会有两个版本号,Junit3 和Junit 4然后选择一个, 本项目选择的是Junit3 ,加入完毕后, 项目中会多出一个Junit3的 一个库。

        然后在项目的根文件夹下建一个Source Folder 例如以下图所看到的, 然后在建立一个和src 下边一样的包。这么做的目的是使下边要生成的測试类。不用引用对被測试类的依赖。他们生成的.class文件在同一个Bin文件夹下。

       

        在我们的要測试的那个类上边单击右键, 然后选择New ,然后选择Others ,然后选择Junit Test Case。 然后Source folder 选择我们后来建立的測试的Source folder。然后将setUp和tearDown勾选上。

       

        将我们我们要測试的那个类的全部的方法都勾选上,或者勾选我们要測试的方法就能够了!

    然后选择完毕!

       

        这样就会看到我们的測试类已经自己主动的为我们生成好了。

    可是我们能够看到。自己主动为我们生成的測试方法。都是没有实现的,并且这些測试方法符合了一定的规范。

    測试方法满足例如以下原则: 1)方法类型必须为public 2)返回值void 3)无參数 4)方法名必须以test开头或者以test结尾。可是建议使用前者!

    所以接下来我们要自己写測试方法的实现了!

    。例如以下所看到的。

     
    package com.tgb.test;
    
    import junit.framework.Assert;
    import junit.framework.TestCase;
    
    public class CountMethodTest extends TestCase {
    
    	/**
    	 * setUp在每一个測试方法运行前都要运行 该方法
    	 */
    	protected void setUp() throws Exception {
    		super.setUp();
    	}
    
    	/**
    	 * tearDown  在每一个測试方法运行完毕后都要运行 该方法
    	 */
    	protected void tearDown() throws Exception {
    		super.tearDown();
    	}
    
    	/**
    	 * 測试目标类的add 方法
    	 */
    	public void testAdd() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		//该值为运行完目标类方法后,返回的实际值 
    		int actual= cm.add(par1, par2);
    		// 推断方法的返回结果
            Assert.assertEquals(3, actual);// 第一个參数是期望值,第二个參数是要验证的值
    	}
    
    	public void testSubtract() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.subtract(par1, par2);
    		assertEquals(3, actual);
    	}
    
    	public void testMultiply() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.multiply(par1, par2);
    		assertEquals(0, actual);
    	}
    
    	public void testDiv() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.div(par1, par2);
    		assertEquals(0, actual);
    	}
    }
    


        然后我们在该測试类的空白处单击右键选择 Run As 然后选择Junit Test 。这样我们就能够运行我们刚才写的单元測试了!

       

        能够看到測试结果例如以下。运行了四个方法,有一个错误的。能够看到打叉的那个失败了! 通过单元測试,我们能够非常快的发现我们的方法写的是否正确!

             

                  

        假设在測试的SourceFolder以下有多个单元測试类,我们想统一进行单元測试。你会怎么处理呢?我们能够一个个的去手动运行,然后在哪等着结果。是不是有点浪费时间呢。Junit 给我提供了一个更好的方法,我们在建立一个測试类。然后 该类的写法例如以下,这样我们就能够一次性的把全部的方法都运行了!

       

    package com.tgb.test;
    
    import junit.framework.Assert;
    import junit.framework.TestCase;
    
    public class CountMethodTest extends TestCase {
    
    	/**
    	 * setUp在每一个測试方法运行前都要运行 该方法
    	 */
    	protected void setUp() throws Exception {
    		super.setUp();
    	}
    
    	/**
    	 * tearDown  在每一个測试方法运行完毕后都要运行 该方法
    	 */
    	protected void tearDown() throws Exception {
    		super.tearDown();
    	}
    
    	/**
    	 * 測试目标类的add 方法
    	 */
    	public void testAdd() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		//该值为运行完目标类方法后,返回的实际值 
    		int actual= cm.add(par1, par2);
    		// 推断方法的返回结果
            Assert.assertEquals(3, actual);// 第一个參数是期望值,第二个參数是要验证的值
    	}
    
    	public void testSubtract() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.subtract(par1, par2);
    		assertEquals(3, actual);
    	}
    
    	public void testMultiply() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.multiply(par1, par2);
    		assertEquals(0, actual);
    	}
    
    	public void testDiv() {
    		int par1=3;
    		int par2=0;
    		CountMethod cm = new CountMethod();
    		int actual= cm.div(par1, par2);
    		assertEquals(0, actual);
    	}
    }
    

        Junit 的使用,非常方便的让我们測试类,可是他生成的測试方法体是空的,都须要自己写, 假设能想.Net 中那样,把測试方法体,大部分的内容都给你写好了就更好了!

  • 相关阅读:
    pwndbg + gdb8.2 + kali (2018-10-09)爬坑
    关于EOF
    ARM的PC和LR寄存器
    存档,IE漏洞,一直不会分析
    QQProtect.sys漏洞真有意思
    问题
    gapz注入代码
    Spring JdbcTemplate批量操作数据库
    消息中间件MQ基础理论知识
    Spring4.3.1 JDBCTemplate操作数据库
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5351400.html
Copyright © 2011-2022 走看看