keeps the bar green to keep the code clean" - JUNIT单元测试

首先新建一个类:

package com.zzk.junit4;

public class T {
    public int add (int x,int y) {
    	return x + y;
    }

    //老版本的测试
    public static void main(String[] args) {
    	int z = new T().add(3, 5);
    	System.out.println(z);
    }

}

然后写一个JUNIT单元测试,对add(int x ,int y)进行测试

可以单独对方法是用JUNIT测试:

package com.zzk.junit4.test;

import static org.junit.Assert.*;//这是一个类不是包

import org.junit.After;
import org.junit.Test;

import com.zzk.junit4.T;

public class TTest {

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testAdd() {
		//fail("Not yet implemented");
        int z = new T().add(5, 3);
        assertEquals(8, z);//期望值8,实际值z
	}

}

大致如此。

文档一份如下:

什么是单元测试

写了个类,要给别人用,会不会有bug?怎么办?测试一下。

用main方法测试好不好?不好!

1.        不能一起运行!

2.        大多数情况下需要人为的观察输出确定是否正确

为什么要进行单元测试

重用测试,应付将来的实现的变化。

提高士气,明确知道我的东西是没问题的。

JUnit4 HelloWorld

1.        new project

2.        建立类

3.        建立testcase

放弃旧的断言,使用hamcrest断言

1.        assertThat

2.        使用hamcrest的匹配方法

a)        更自然

3.        示例

a)        assertThat( n, allOf(greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );

b)       assertThat( str,containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );

c)        assertThat( d, closeTo( 3.0, 0.3) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );

d)       assertThat( map, hasEntry("bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );

Failure和Error

1.        Failure是指测试失败

2.        Error是指测试程序本身出错

JUnit4 Annotation

1.        @Test: 测试方法

a)        (expected=XXException.class)

b)       (timeout=xxx)

2.        @Ignore: 被忽略的测试方法

3.        @Before: 每一个测试方法之前运行

4.        @After: 每一个测试方法之后运行

5.        @BeforeClass: 所有测试开始之前运行

6.        @AfterClass: 所有测试结束之后运行

运行多个测试

注意

1.        遵守约定,比如:

a)        类放在test包中

b)       类名用XXXTest结尾

c)        方法用testMethod命名

其他框架

TestNG

时间: 2025-01-25 12:33:40

keeps the bar green to keep the code clean" - JUNIT单元测试的相关文章

Error in registration. Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授

2014-11-20 12:34:35.252 JPushDemo[307:27958] Error in registration. Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的"aps-environment"的授权字符串" UserInfo=0x14d65220 {NSLocalizedDescription=未找到应用程序的"aps-environment"的授权字符

eclipse中"Execute selected code"按钮在哪里呢?

问题描述 eclipse中"Execute selected code"按钮在哪里呢? 看到一段eclipse常用技巧: 十一 怎么快速运行一段java代码?用scrapbook 有时候我们想要临时写段java代码运行,譬如不清楚当前jvm系统变量. 应该用 System.out.println(System.getProperties()); 在eclipse中可以新建一个 scrapbook来运行这行代码而不需要正儿八经写一个class类. 步骤如下: 新建( ctrl+n) --

Microsoft Windows Server Code Name"Longhorn"Beta 3 正式发布! 下载_常用工具

第一时间报道,Microsoft Windows Server Code Name "Longhorn" Beta 3已经上传到微软下载中心,这是微软第一次向所有人公开发布Longhorn Server服务器测试版本,Longhorn Server Beta 3有标准版.企业版.数据中心版.网络版和安腾版,除64-bit的安腾版外均提供32-bit和64-bit两种版本.另外标准版和企业版还可以定购安装DVD光盘.Longhorn Server Beta 3有英语.德语和日语三种语言版

单元测试技术栈梳理

keep the bar green to keep the code clean. 前言 单元测试是一个老生常谈的事情,可是能够深入开发人心,又能够喜欢写单元测试的同学少之又少.单元测试似乎功不在当下的事情,业务代码快速完成需求,才是王道,在工作量评估的时候,如果开发同学说要花上若干天时间来写单测,需要延后几天发布,那么PD可能就会:!#@%5*))-@#,单元测试是一件有情怀,有技术素养,有远期收益的工作,<集团开发规约>中新增了单元测试规约,也直接说明了单元测试的重要性,推荐大家看看:h

JUnit的基本使用

一些关于单元测试的理念: 单元测试并不能证明你的代码是正确的,只能证明你的代码是没有错误的. Keep bar green and keep your code cool 关于JUnit的两种最基本的使用步骤 第一种方式<4.0的JUnit版本 1. 在已经编写好的项目中新建一个package用于单元测试. 2. 要在buildpath中加入JUnit对应的包. 3. 新建一个类,比如unitTest 4. 当前的类需要继承Test类,需要导入一下的一些包: import static org.

Java Tools: Source Code Optimization and Analysis[转]

Below is a list of some tools that can help you examine your Java source code for potential problems: 1. PMD from http://pmd.sourceforge.net/ License: PMD is licensed under a "BSD-style" license PMD scans Java source code and looks for potential

90分钟实现一门编程语言(极简解释器教程)_C#教程

本文介绍了如何使用 C# 实现一个简化 Scheme--iScheme 及其解释器. 如果你对下面的内容感兴趣: 实现基本的词法分析,语法分析并生成抽象语法树. 实现嵌套作用域和函数调用. 解释器的基本原理. 以及一些 C# 编程技巧. 那么请继续阅读. 如果你对以下内容感兴趣: 高级的词法/语法分析技术. 类型推导/分析. 目标代码优化. 本文则过于初级,你可以跳过本文,但欢迎指出本文的错误 :-) 代码样例 public static int Add(int a, int b) { retu

设计实例:用字体变化设计的logo实例

今天带来用字体的变化设计的logo,这个趋势已经有很长一段时间了,字体本身就具有简洁,易读的特性,用字体的变化来设计logo方法包括:改变颜色,大小,留白,间距,变形,透视,再次排版,加辅助图案,合并字体,字体局部形象化等等,这里我们挑选出72个此类logo,和大家一起欣赏学习! 1. Killed Productions Who killed letter i? 2. Wrong / Right Really smart logo! 3. TypeFACE Typeface: word-pla

再探早期示例

为注意到一些利用新事件模型的例子和为学习程序从老到新事件模型改变的方法,下面的例子回到在本章第一部分利用事件模型来证明的一些争议.另外,每个程序包括程序片和应用程序现在都可以借助或不借助浏览器来运行. 1. 文本字段 这个例子同TextField1.java相似,但它增加了显然额外的行为:   //: TextNew.java // Text fields with Java 1.1 events import java.awt.*; import java.awt.event.*; impor