经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究java应用层面的知识,以后的日子我会继续更新java进阶知识,深入探究实际工作中的java应用,说的不好的地方还请见谅,如果能提出你宝贵的建议,或是参与评论我将荣幸之至!

自定义泛型方法:
public static <T> T result(T t)

1.junit单元测试框架

  注意:测试代码不要写在项目中,用完再删掉,或者新建测试类

  一:需要他的原因:a.我们在测试一段代码是否有用一般会再main主函数中测试

           b.目前的结果都是通过人工对比

           这两个操作大大加大了我们的工作量,junit就能自动帮我们完成这些操作

  二:下载:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22junit%22%20AND%20a%3A%22junit%22

    junit.jar

  三:使用现状:

    一般大公司用这个,员工上班首先到SVN上将文件checkout下来,然后运行单元测试,测试没有问题就说明代码没有问题,完后再用junit.jar测试没有问题再提交到svn中

  四:使用方法:

    (一)安装配置:将下好的junit.jar在项目文件夹下新建一个lib文件夹用来存放一些工具类,再通过bulid path添加到项目中能让项目识别

    (二)a.直接加@Test测试:这种测试需要被测试的方法满足几个条件(1.没有放回值就void 2.方法没有参数3.测试的方法不能是static修饰。)  

    @Test
public void sort(){
int[] arr = {12,4,1,19};
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = i+1 ; j<arr.length ; j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("数组的元素:"+Arrays.toString(arr)); }

      b.实际项目中的测试代码依然加@Test,但是单独为其创建测试代码

      我们在实际的项目中不可能要测试代码都要满足(1.没有放回值就void 2.方法没有参数)这样两个条件几乎是不可能的所以对应就有解决方案:

      为需要测试的工具类添加对应的测试工具类(命名规则:被测试的类:类名+Test;被测试方法:test+方法名)

      例子:

要测试的类:

public class Tool {
public static int getMax(int a,int b){
/*int a = 3;

int b =5; */

int max = a>b?a:b;
return max;
}

public static int getMin(){
int a = 3;
int b = 5;
int min = a<b?a:b;
return min;
}
}

创建的测试类

public class ToolTest {
@Test
public void testGetMax(){
int max=Tool.getMax(3, 4);
if(max!=4){
throw new RuntimeException();
}else{
System.out.println("z最大值:"+max);
}
}
@Test
public void testGetMin(){
int min=Tool.getMin();
if(min!=3){
throw new RuntimeException();
}else{
System.out.println("最小值:"+min);
}
}
}

       c.测试结果人工对比junit的解决方法:断言Assert

        用了断言:不仅剩下一大笔代码,还减少了测试运行时间其中:

             Assert.assertSame():内部比较机制==;Assert.assertEquals(expected, actual):内部比较机制“Equel”;

@Test
public void testGetMax(){
int max=Tool.getMax(3, 4);
/*if(max!=4){
throw new RuntimeException();
}else{
System.out.println("z最大值:"+max);
}*/
Assert.assertSame(4, max);
}

 

      c.如果测试一个方法的时候需要准备测试的环境或者是清理测试的环境,那么可以@Before、 @After 、@BeforeClass、 @AfterClass这四个注解。

      @Before、 @After 是在每个测试方法测试的时候都会调用一次, @BeforeClass、 @AfterClass是在所有的测试方法测试之前与测试之后调用一次而已。

例子:

    //准备测试的环境
//@Before
@BeforeClass
public static void beforeRead(){
System.out.println("准备测试环境成功...");
} //读取文件数据,把把文件数据都
@Test
public void readFile() throws IOException{
FileInputStream fileInputStream = new FileInputStream("F:\\a.txt");
int content = fileInputStream.read();
System.out.println("内容:"+content);
} @Test
public void sort(){
System.out.println("读取文件数据排序..");
} //清理测试环境的方法
// @After
@AfterClass
public static void afterRead(){
System.out.println("清理测试环境..");
}

    

java深入探究01的更多相关文章

  1. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  2. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  3. java 反射机制01

    // */ // ]]>   java反射机制01 Table of Contents 1 反射机制 2 反射成员 2.1 java.lang.Class 2.2 Constructor 2.3 ...

  4. JAVA自学作业01

    JAVA自学作业01 1.Hello World 程序 class HelloWorld{ public static void main(String args[]){ System.out.pri ...

  5. Java泛型解析(01):认识泛型

    Java泛型解析(01):认识泛型 What      Java从1.0版本号到如今的8.中间Java5中发生了一个非常重要的变化,那就是泛型机制的引入.Java5引入了泛型,主要还是为了满足在199 ...

  6. Java自动化测试框架-01 - TestNG之入门篇 - 大佬的鸡肋,菜鸟的盛宴(详细教程)

    TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...

  7. 关于Java中2.0-1.1!=0.9的问题

    关于Java中2.0-1.1!=0.9的问题 问题引出: 在<Java核心技术>中关于浮点数值计算部分提到,System.out.println(2.0-1.1)这条语句并不是想当然的0. ...

  8. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  9. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

随机推荐

  1. Mac下安装LNMP(Nginx+PHP5.6)环境(转)

    安装Homebrew 最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例,记录一下从零开始安装Mac下LNMP环境的过程 确保系统已经安装xcode,然后使用一行命令安装 ...

  2. 详解zabbix安装部署(Server端篇) (转)

    Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员. 今天开始研究下Zabbix,使 ...

  3. 自己定义控件三部曲视图篇(二)——FlowLayout自适应容器实现

    前言:我最大的梦想,就是有一天.等老了坐在摇椅上回望一生,有故事给孩子们讲--. 相关文章: <Android自己定义控件三部曲文章索引>:http://blog.csdn.net/har ...

  4. 一致性哈希算法PHP测试片段

    <?php header('Content-type: text/html; charset=utf8');# 抽象接口interface hash{ public function _hash ...

  5. UVA 11354 - Bond (最小生成树 + 树链剖分)

    题目链接~~> 做题感悟:这题開始看到时感觉不是树不优点理,一想能够用 Kruskal 处理成树 ,然后就好攻克了. 解题思路: 先用 Kruskal 处理出最小生成树.然后用树链剖分 + 线段 ...

  6. ubuntu环境 rake aborted!

    错误: rake aborted! Gem::LoadError: You have already activated rake 10.3.2, but your Gemfile requires ...

  7. HTML5 2D平台游戏开发#5攻击

    目前为止,角色除了基本的移动外还什么都不能做,于是我打算先实现角色的攻击动画.角色的普通攻击一共可以分为三个阶段: 一段斩 二段斩 三段斩 移动攻击 跳跃攻击 触发方式为角色站立时按下J(攻击)键,角 ...

  8. 2013 年最好的 20 款免费 jQuery 插件

    2013 年最好的 20 款免费 jQuery 插件 oschina 发布于: 2014年01月11日 (8评) 分享到  新浪微博腾讯微博 收藏+99 互联网上面有很多 jQuery 插件,这里我们 ...

  9. 解决UISlider滑块不灵敏

    由于UI给的thumbImage图片过小,默认UISlider开始拖动的手势范围只有thumbImage的大小之内. 为了解决这个问题需要创建一个子类继承于UISlider.重写其中的方法: - (C ...

  10. BFS 和 DFS

    DFS用到递归,BFS要用到一个辅助队列 #include "stdafx.h" #include<iostream> #include<vector> # ...