(相关软件包和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)等等。
版权归原作者 登登登__ 所有, 如有侵权,请联系我们删除。