单元测试及JUnit的应用

目录

一 什么是Junit

Eclipse中JUnit的应用 

二 通过 FindBugs测试

 三 SourceMonitor的测试方法


相关软件包和jar包在资源里下载或者私聊我哦

一 什么是Junit

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

Eclipse中JUnit的应用 

(1)从外部导入JUnit,下载Junit.jar, 并加入到Eclipse中。

(相关的jar在资源中,请自行下载,或者私聊我)

 

(2)或者从eclipse的library中导入JUnit

 

(3)JUnit如何进行单元测试

a.  建立一个被Junit测试的类

b.建立其对应的Junit Test类,在需要建立Junit的包内右击,选择New/Junit Test Case命令

 c.自动生成如下代码:

package unit.lily; 
import static org.junit.jupiter.api.Assertions.*; 
import org.junit.jupiter.api.AfterAll; 
import org.junit.jupiter.api.BeforeAll; 
import org.junit.jupiter.api.BeforeEach; 
import org.junit.jupiter.api.Test; 
import junit.framework.TestCase; 
public class TestStringUtil extends TestCase { 
@BeforeAll 
static void setUpBeforeClass() throws Exception { 
}
@AfterAll 
static void tearDownAfterClass() throws Exception { 
}
@BeforeEach 
public void setUp() throws Exception { 
}
@Test 
public void test() { 
//fail("Not yet implemented"); 
StringUtil a=new StringUtil(); 
assertEquals("aabb", a.addString("aa", "bb")); 
} 
}

(4)执行测试,右击TestStringUtil,选择Run As|JUnit Test命令

 如果测试失败


二 通过 FindBugs测试

(1)通过FindingBugs的在线安装打开Help->Install New Software,在Eclipse的插件安装地址中输入http://findbugs.cs.umd.edu/eclipse

(3)设置相关

(4)建立工程和相关代码

/*
	 * bug 示例1
	 * 新建的对象未用,且使用的低效的new string(构造方法)
	 */
	String a = new String();
	/*
	 * bug 示例2
	 * 对象赋为null值后 没有被重新赋值
	 */
	String b=null;
	/*
	 * bug 示例3
	 * 方法命名不规范
	 */
	public void IsEquals()
	{       /*
		 * bug 示例4
		 * Read of unwritten field
		 */
		if(b.equals("ac"))
		{		
			System.out.println("相等");	
		}
		else
			System.out.println("不相等");
      }
public String  formatRate(Double r)
	{
		/*
		 * bug 示例5
		 * 使用equals比较不同类型的数据,"undefined"是String类型,r是Double类型,这两个比较肯定返回false
		 * ("undefined").equals(r)完全没有必要
		 * 
		 */
		if(r==null ||  ("undefined").equals(r))
		{return null;
		}
		return "r";
	}}

结果:


 三 SourceMonitor的测试方法

(相关的软件包自行从资源里面下载或者私聊我)

Lines: 指的是代码行数

Statements:语句的行数,这个C中有所不同。

Percent Branch Statement:分支数占总语句数的百分比

Method Call Statement:方法调用语句数

Percent Lines with Comments:注释语句占总语句数的百分比

Classes and Interfaces:类和接口数

Methods per Class:每个类平均包含函数个数

Average Statements per Method:每个函数平均包含的语句个数

Line Number of Complex Method:最复杂函数的行号

Maximum Complexity:该类中最复杂函数的复杂度

Line Number of Deepest Block:最深层语句块的行号

 

 

 最后总结:

我们通过单元测试工具Junit、代码静态工具FindBugs、一级代码复杂度检测工具SourceMonitor的使用,我了解到在编写和运行可重复的测试上,一些特性:如测试代码和产品代码分开。一些测试框架的编写,都可以使代码的编写更的方便;而对于代码的静态检测工具FindBugs是支持Java的,但我了解到更多的静态检测工具:像支持c++的Parasoft C++ Test,也知道了FindBugs实际是扫描和分析Java字节码(.class文件),在记忆中我加深了对软件的使用技巧;而它的安装方法有俩个,我也尝试并且掌握;而SourceMonitor则是确认项目的一些信息,包括项目名(Project Name),项目代码语言(Source Code Language),代码路径(Source Code Directory),是否检查子路径(Source Code Sub-directory)等等。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

登登登__

期待每一份真诚

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值