java深入探究01
经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究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的更多相关文章
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- Java 集合系列 01 总体框架
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- java 反射机制01
// */ // ]]> java反射机制01 Table of Contents 1 反射机制 2 反射成员 2.1 java.lang.Class 2.2 Constructor 2.3 ...
- JAVA自学作业01
JAVA自学作业01 1.Hello World 程序 class HelloWorld{ public static void main(String args[]){ System.out.pri ...
- Java泛型解析(01):认识泛型
Java泛型解析(01):认识泛型 What Java从1.0版本号到如今的8.中间Java5中发生了一个非常重要的变化,那就是泛型机制的引入.Java5引入了泛型,主要还是为了满足在199 ...
- Java自动化测试框架-01 - TestNG之入门篇 - 大佬的鸡肋,菜鸟的盛宴(详细教程)
TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框 ...
- 关于Java中2.0-1.1!=0.9的问题
关于Java中2.0-1.1!=0.9的问题 问题引出: 在<Java核心技术>中关于浮点数值计算部分提到,System.out.println(2.0-1.1)这条语句并不是想当然的0. ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
随机推荐
- 关于浮点数的json解析
近期在工作中遇到个问题 通过post请求从其他系统(好像是C#写的)获得json字符串 {"geometry":{"rings":[[[40426489.331 ...
- linux下OpenSSL的RSA密钥生成
工具的安装: 一.源码安装 OpenSSL Version:openssl-1.0.0e.tar.gz ------------------------安装: 1.将下载的压缩包放在根目录, 2.在文 ...
- HTML5 2D平台游戏开发#6地图绘制
此前已经完成了一部分角色的动作,现在还缺少可以交互的地图让游戏看起来能玩.不过在开始之前应当考虑清楚使用什么类型的地图,就2D平台游戏来说,一般有两种类型的地图,Tile-based和Art-base ...
- CSS div固定顶端
position: fixed;原来只需要这么一个设置就可以!
- Android程序的打包和安装
当我们使用Android Studio的时候,这些步骤都交给它去做了. 编译 classes.dex 文件 编译 resources.arsc 文件 生成资源索引表resources.arsc. 把r ...
- protobuf编译安装
为什么选择protobuf,而不选择thift和avro,原因大概几点吧,网上对比的文章很多,我主要关注以下几点 1.protobuf序列化性能最好,序列化后字节数最少. 2.protobuf是单纯的 ...
- zip文件压缩
zip文件结构 上面中的每一行都是一个条目,zip文件就是由一个或者多个条目组成. 条目在Java中对应ZipEntry类 创建zip压缩文件 知 ...
- [转]基于fiddler的APP抓包及服务端模拟
在HTTP接口的测试过程中,一般我们会按照如下的步骤进行: 1)测试环境的准备 2)HTTP消息体的构造 3)HTTP消息的发送及断言 如果我们可以拿到项目组的接口文档,并且HTTP后台服务是可以工作 ...
- java getResourcesAsStream()如何获取WEB-INF下的文件流
getResourcesAsStream()来读取.properties文件,但是getResourcesAsStream()仅在java项目时能获取根目录的文件: 在web项目中,getResour ...
- android shape的用法总结
参考代码: <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corner ...