JUint4 简单测试代码

=======================测试示例=====================

=======================被测试类=====================
package com.fengke;

import org.junit.Test;

public class ReadNumbers {

    private int a;
    private int b;
    static int c;
    static {
        int c=0;
    }

    public int max(){
         c = b;
        if(a>b){
            c=a;
        }
        return c;

    }

    public ReadNumbers() {
        super();
        // TODO Auto-generated constructor stub
    }

    public ReadNumbers(int a, int b) {
        super();
        this.a = a;
        this.b = b;
    }

}
====================== 基本测试======================
package com.test;

import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.fengke.ReadNumbers;
/**
 * 测试
 * @author 锋客
 *
 * @Test:将一个普通的方法修饰成为一个测试方法
 *         @Test(expected=XX.class)
 *         @Test(timeout=毫秒 )
 * @BeforeClass:它会在所有的方法运行前被执行,static修饰
 * @AfterClass:它会在所有的方法运行结束后被执行,static修饰
 * @Before:会在每一个测试方法被运行前执行一次
 * @After:会在每一个测试方法运行后被执行一次
 * @Ignore:所修饰的测试方法会被测试运行器忽略
 * @RunWith:可以更改测试运行器 org.junit.runner.Runner
 *
 *
 *注意:
 * 1.Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示 测试点发现了问题
 * ,就是说程序输出的结果和我们预期的不一样。
 * 2.error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的
 * 一个隐藏的bug
 * 3.测试用例不是用来证明你是对的,而是用来证明你没有错。
 *
 */

public class NumberTest {
    /*
     * @BeforeClass
     * 在测试方法运行前执行
     * 执行一遍,在整体运行前执行
     * 通常用来对资源的清理,如关闭数据库的连接
     */

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("BeforeClass");
    }

    /*
     * @BeforeClass
     * 在测试方法运行后执行
     * 执行一遍,在整体运行后执行
     */

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("AfterClass");
    }
    /*
     * @Before
     * 在测试方法运行前执行
     * 有几个测试,运行几遍
     * 该方法不能是静态的
     */
    @Before
    public  void beforMethod(){
        System.out.println("before");
    }
    /*
     * @After
     * 在测试方法运行后执行
     * 有几个测试,运行几遍
     * 该方法不能是静态的
     */
    @After
    public  void afterMethod(){
        System.out.println("after");
    }
    /*
     * 测试内容
     * 1.测试方法上必须使用@Test进行修饰
     * 2.测试方法必须使用public void 进行修饰,不能带任何的参数
     * 3.新建一个源代码目录来存放测试代码
     * 4.测试类的包应该和被测试类保持一致
     * 5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
     * 6.测试类使用Test作为类名的后缀(不是必须)
     * 7.测试方法使用test作为方法名的前缀(不是必须)
     */
    @Test
    public void testMax1() {
        System.out.println("***************************");
        System.out.println(this.getClass().getName());
        assertEquals(4, new ReadNumbers(2,4).max());
        System.out.println(new ReadNumbers(2,4).max());
        System.out.println("***************************");
    }
    @Test
    public void testMax2(){
        System.out.println("***************************");
        System.out.println(this.getClass().getName());
        System.out.println("***************************");
    }
    /*
     * 对比
     * (timeout=2000)限制时间,防止死循环
     * @Ignore("...")忽略该测试方法,根本不执行,不会运行before和after
     */
    @Ignore("...")
    @Test(timeout=2000)
    public void testWhile1() {
        System.out.println("***************************");
        while(true) {
            System.out.println("run forever...");
        }
        //System.out.println("***************************");
    }

    @Test(timeout=50)
    public void testWhile2() {
        System.out.println("***************************");
        while(true) {
            System.out.println("run forever...");
        }
        //System.out.println("***************************");
    }
    /*
     * 对比
     * expected=ArithmeticException.class
     * 异常处理
     */
    @Test(expected=ArithmeticException.class)
    public void testDivide1() {
        assertEquals(3, 6/0);
    }
    @Test
    public void testDivide2() {
        assertEquals(3, 6/0);
    }

}
==========================ParameterTest==============
package com.test;

import static org.junit.Assert.*;

import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import com.fengke.ReadNumbers;

@RunWith(Parameterized.class)
public class ParameterTest {

    /*
     * 1.更改默认的测试运行器为RunWith(Parameterized.class)
     * 2.声明变量来存放预期值 和结果值
     * 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
     * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
     */
    int expected =0;
    int input1 = 0;
    int input2 = 0;
    /*
     * @Parameters
     * 静态的方法
     *
     */
    @Parameters
    public static Collection<Object[]> t() {
        return Arrays.asList(new Object[][]{
                {2,1,2},
                {3,2,2}
        }) ;
    }
    //构造器
    public ParameterTest(int expected,int input1,int input2) {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }

    @Test
    public void test() {
        assertEquals(expected, new ReadNumbers(input1,input2).max());
    }

}
=======================测试套=======================
package com.test;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import com.fengke.ReadNumbers;
/**
 * 测试套件
 * @author 锋客
 *
 *
 */

@RunWith(Suite.class)
@Suite.SuiteClasses({Task1.class,Task2.class,Task3.class})
public class SuiteTest {
    /*
     * 1.测试套件就是组织测试类一起运行的
     *
     * 写一个作为测试套件的入口类,这个类里不包含其他的方法
     * 更改测试运行器Suite.class
     * 将要测试的类作为数组传入到Suite.SuiteClasses({})
     */

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("测试套件开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("测试套件执行完毕");
    }

    //以下内容不会执行
    @Before
    public  void beforMethod(){
        System.out.println("before");
    }
    @After
    public  void afterMethod(){
        System.out.println("after");
    }
    @Test
    public void maxTest(){
        assertEquals(5, new ReadNumbers(5,2).max());
    }

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task1 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task1开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task1执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(2, new ReadNumbers(2,2).max());
    }

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task2 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task2开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task2执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(3, new ReadNumbers(3,2).max());
    }

}
=================================================
package com.test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.fengke.ReadNumbers;

public class Task3 {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("Task3开始执行");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("Task3执行完毕");
    }

    @Test
    public void testMax() {
        assertEquals(4, new ReadNumbers(4,2).max());
    }

}
=================================================
时间: 2024-10-11 00:56:36

JUint4 简单测试代码的相关文章

memcached window版 下载安装,简单测试

官网: http://www.memcached.org/ 只有tag格式的,搞了好久都没找到windows版的,还有很多uri找不开,google的都打不开,中国政府就是威武. 下载地址: http://jehiah.cz/projects/memcached-win32/files/memcached-1.2.1-win32.zip 这个用讯雷可以下载下来! 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d in

python3 简单登录,注册测试代码

''' 写个登录,注册的简单代码.只用来简单测试,实现简单功能,没有过多的条件判断.仅仅用来练习. ''' def login(username,password): ''' db这个文件的路径是当前目录 打开保存账号密码的文件,将文件中的账号密码读出来,以字典格式保存. 如果输入的账号已经存在于字典中的键,结果返回FALSE. 如果账号存在字典且对应的键值等于输入的密码,则返回True. ''' fo=open('db','r') dict1={} for i in fo: i=i.strip

C++中 简单查看临时对象,局部对象的生命周期,及拷贝构造函数(测试代码)

#include <iostream> using namespace std; class A {     public: A(int a = 5) {     cout<<"A constructor "<<this<<endl; } ~A() {     cout<<"A destructor "<<this<<endl; } A(const A & r) {     

Redis安装及简单测试

题目链接:11645 - Bits 题意:给定一个数字n,要求0-n的二进制形式下,连续11的个数. 思路:和 UVA 11038 这题类似,枚举中间,然后处理两边的情况. 不过本题最大的答案会超过longlong,要用高精度,不过借鉴http://www.cnblogs.com/TO-Asia/p/3214706.html这个人的方法,直接用两个数字来保存一个数字,这样能保存到2个longlong的长度,就足够存放这题的答案了. 代码: #include <stdio.h> #include

MyPython--&gt;进阶篇--&gt;测试代码

测试函数 要学习测试,得要有测试的代码.下面是一个简单的函数,接受名和姓并返回整洁的姓名 name_function.py def get_allname(x,m): allname = ('%s %s'%(x,m)).title() return allname 编写测试代码 from name_function import get_allname print(get_allname('cc','leo')) import unittest class NameTestCase(unitte

java:Spring框架1(基本配置,简单基础代码实现)

1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下新建配置文件applicationContext.xml,并配置bean节点和property: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfr

.NET单元测试的艺术-3.测试代码

开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录: 1.入门 2.核心技术 3.测试代码 一.测试层次和组织 1.1 测试项目的两种目录结构 (1)集成测试和单元测试在同一个项目里,但放在不同的目录和命名空间里.基础类放在单独的文件夹里. (2)集成测试和单元测试位于不同的项目中,有不同的命名空间. 实践中推荐使用第二种目录结构,因为如果我们不把

03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

 1 PersonTestMapper.xml中的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:命名空间

依然是关于我空间那篇申请的日志《JavaScript axError:Unexpected token ILLEGAL 很简单的代码&hellip;&hellip;》

接下来要讲的日志现在的标题已经更改为<很简单的代码,但是无法--> 这篇日志地址:http://www.cnblogs.com/herbertchina/p/4475092.html 经过多次测试,给出如下提示: 1.如果你是360急速浏览器(360浏览器没测试)请谨慎打开:会加载失败导致崩溃,电脑cpu也会疯狂运转(CPU风扇突然变快),最后导致浏览器崩溃 2.如果你是IE浏览器(测试版本是IE11),可以无所顾忌 3.如果你是Google Chrome ,也会导致加载问题,但是浏览器不会崩