当前位置:文档之家› java单元自测

java单元自测

java单元自测
java单元自测

Java单元自测

杨增放

单元自测一

填空题:

1、Java源程序文件的扩展名是_java_;Java源程序经编译后生成Java字节码文件,其扩展名是_class_。

2、在Java语言中,将源代码翻译成_java字节码文件_时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。

3、一个Application源程序文件名为MyPro.java,如果使用Sun公司的Java开发工具SDK 编译该源程序文件并使用其虚拟机运行这个程序的字节码文件,应该顺序执行如下两个命令:_javac MyPro.java_、_java MyPro_。

4. 已知:int a =8,b=6; 则:表达式++a-b++的值为_3_。

5. 已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为_false_。

6. 表达式(18-4)/7+6的运算结果是_8_。

7、表达式5>2 && 8<8 && 23<36的运算结果是_false_。

思考题:

1、源程序是什么?

答:源程序文件的三要素:

一、以package语句开始的包声明语句为可选,若有,只能有一个且必须是第一句,若没有,此文件将放到默认的当前目录下

二、以import语句开始的类引入声明语句,数量可以是任意个

三、class定义和interface定义中,由public开始的类定义只能有一个,且要求源程序文件名必须与public类名相同,Java语言对字符的大小写敏感

2、编译的作用是什么?

答:用Java语言编辑的源程序的执行方法是采用先经过编译器编译、再利用解释器解释的方式来运行的。

3、什么是Java的byte-codes,它的最大好处是什么?

答:Java源程序经过编译器编译,会被转换成一种我们将它称之为“字节码(byte_codes)”的目标程序。“字节码”的最大特点便是可以跨平台运行。

4、机器语言程序、高级语言程序以及可表示成Java字节码程序之间的区别是什么?

答:机器语言是二进制编码表示,可以用机器直接运行。高级语言是贴近自然语言的,必须编译或解释才能让计算机运行,并且程序运行依赖该语言处理系统。可表示成java字节码的程序必须经过编译产生字节码程序,java字节码程序可以实现跨平台运行。

5、试简述J2SE、J2ME与J2EE的区别。

答:(1) Java ME——Java Micro Edition,用于嵌入式Java消费电子平台,其内存资源受限。不论是无线通讯、手机、PDA等小型电子装置都可采用其作为开发工具及应用平台。(2) Java SE——Java Standard Edition,是Java最通行的版本,是用于工作站、PC机的Java标准平台。

(3) Java EE——Java Enterprise Edition,可扩展的企业应用Java平台,它提供了企业e-Business 架构及Web Services服务,其开放的标准和优越的跨平台能力使其适于开发大规模的、分布式联网应用程序以及基于Web的应用程序。

6、练习使用浏览器查看Java API文档。

7、SDK的编译命令是什么?

答:javac

8、Java标识符的命名有什么规定?

答:一、用字母、下划线“_”或“$”作为开头字符,但数字不能作为变量的开头字符;二、标识符中间不能使用空格;

三、不能使用Java的操作符,如“+”、“-”、“*”、“/”等;

四、用户自定义标识符不能使用Java的关键字;

五、严格区分大小写,即:my_var和My_var将被认为是两个不同的标识符。

例:className、$member、_variable、var_num、varObj1 合法

1var、case、are& 非法

9、如何正确地定义变量?

变量命名遵循标识符的命名规则

约定:

变量名是以小写字母开头,而类名是以一个大写字母开头的

如果变量名包含了多个单词,而每个单词要组合在一起,则在每个单词的第

一个字母大写,比如isVisible。

下划线(_)可以处在变量的任何地方,但是一般地它只用在标识符常量中

分离单词,因为标识符常量的常量名都是用大写字母的,利用下划线可以看

得更清楚。

一般来说,变量名命名要见名知义,不宜太简单,但也不宜过长。

10、当Java程序的表达式中有类型不符合的情况时,有哪些规则可以处理类型转换?

答:Java允许它的用户有限度地进行数据类型转换处理。转换的方式可分为“自动类型转换”和“强制类型转换”两种。

1.自动类型转换:整型、实型和字符型数据需要进行混合运算时,首先需要把不同类

型的数据转化为同一类型,然后才能进行运算。转换时,系统将按照数据类型的表示范围由小到大的转换原则自动进行。数据类型的表示范围由小到大的顺序依次为:

2.强制类型转换:当表示范围大的数据类型要转换成表示范围小的数据类型时,需要

用到强制类型转换。

单元自测二

一、思考题:

1、什么是结构化程序设计?

答:结构化程序设计有三种基本的程序流程结构:顺序、选择、循环。

2、使用while和do...while循环有什么不同?

答:do while循环语句功能与while语句类似,但do while语句的循环终止判断是在循环体之后执行,即,它总是先执行一次循环体,然后判断条件表达式的值是否为真,若为真,则继续执行循环体;否则循环到此结束。

与do while语句所不同的是,while语句如果开始时的判别表达式为假,则可能一次都不执行循环体而直接结束循环。

3、简述break和continue语句的区别

答:在Java中可以用break语句强行退出循环,继续执行循环外的下一个语句

如果break出现在嵌套循环中的内层循环,则break语句只会退出当前的一层循环,以for循环流程为例:在循环主体中有break语句时,当程序执行到break,即会退出循环主体,到循环外层继续执行。

程序运行到continue语句时,就会停止循环体中剩余语句的执行,而回到循环的开始处继续执行循环。

4、一维数组与二维数组如何声明、赋值及输出?

答:一维数组声明语法格式如下:

type 数组名[ ]=new type [个数n]

对一维数组的赋值有如下方法:

1.在声明时直接赋值,语法格式为:

type 数组名[ ]={数值1,数值2,……,数值n};

2、在赋值声明的时候,不需要给出数组的长度,编译器会视所给的数值个数来决定数组的长度,例如:

int mm[]={2,4,6,8,10,12,14,16,18,20}

若是对数组的元素进行有规律的赋值,则可以使用循环的方式进行

要输出使用数组里的元素,可以通过利用其下标来达到目的,只有一个下标值的数组就称为一维数组。Java数组的下标编号从0开始,如果声明的数组元素个数为n,则数组元素下标的变化只能是0~n-1。

在Java中,因为数组元素可以声明成任何类型,因此如果一维数组的元素还是一维数组的话,这种数组就被称为二维数组。二维数组声明语法格式如下:

type 数组名[ ][ ]=new type [个数][个数];

对于二维数组元素的赋值,同样可以在声明的时候进行:

例如:int ssa[][]={{20,25,26,22},{23,24,20,28}};二维数组赋值及输出可以借助一维数组。

二、填空题

1、下面的程序运行后,其输出结果是_ #*#*#_

public class Yuedu1 {

public static void main(String[] args) {

int i;

for(i=1;i<6;i++)

{

if(i%2==1) {

System.out.print("#");

continue;

}

System.out.print("*");

}

System.out.println();

}

}

2、下面的程序经运行后,其输出结果是(x1=10x2=6)

public class Yuedu3 {

public static void main(String[] args) {

int x,y;

System.out.print("x1="+add(4,6));

System.out.print("x2="+add(3,add(1,2)));

}

static int add(int x,int y)

{

return x+y;

}

}

3、下面的程序经运行后,其输出结果是_72___

public class Yuedu4 {

public static void main(String[] args) {

System.out.print(fun(4));

}

static int fun(int n)

{

int t;

if((n==0)||(n==1))

t=3;

else

t=n*fun(n-1);

return t;

}

}

4、下面的程序经运行后,其输出结果是_ y=1 x=0_

public class Yuedu1 {

public static void main(String[] args) {

int x,y;

x=y=0;

do{

y++;

x*=x;

}

while ((x>0)&&(y>5));

System.out.println("y="+y+" x="+x);

}

}

最后修改: 2014年02月28日星期五13:38

跳过导航

单元自测3

一、思考题

1、类和对象之间的关系

答:对象是客观世界中的某个具体事物。类是具有共同特性和行为的事物的抽象,是一种特殊数据类型。在类中包含了数据和与数据有关的操作(方法)。对象是类的实例。

2、举例说明类(静态)成员的特点

答:1.特点一:静态变量的值是共享。比如说A类中有个静态变量V_A,A类创建了两个实例a,b。如果给实例a的变量V_A赋值,如a.V_A=1。那么这时候查看实例b.V_A 变量的值也为1,也就是说A对象实例化的两个类共享同一个变量值。

2.特点二:不需要对象实例化就可以使用。比如A类中的静态变量V_A可以用A.V_A 的形式使用。

3、Java中的包和Windows的文件夹有什么关系?

答:目录层次结构非常类似,包对应着Windows文件系统的目录层次结构。

4、类的成员的访问权限和包的关系

答:类的成员的权限用权限关键字设置,类的成员的权限和包的关系如下:

权限:Public、protected、默认的同一包允许访问。

权限:private同一包也不允许访问。

权限:Public、protected的不同包子类允许访问

权限:默认、private的不同包子类不允许访问

5、方法的重载和覆盖的区别

答:重载与覆盖的区别

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

二、填空题

1、在声明一个类变量时,前面必须要加上___static____修饰符

2、__import___语句可以导入Java的实用包中的所有类

3、方法的覆盖是___后期___绑定,方法的重载是___前期____绑定

4、写出一个表达式:输出角度30°的余弦值__Math.cos(30*3.14/180)__

5、为类Class1创建一个静态整型变量s_data:_static int s_data_。

6、写出抽象类IamAbstract的类头定义语句:_public abstraact class IamAbstract_。

7、定义一个抽象方法abstractMethod,没有形式参数,返回值为布尔型变量:_public

abstract boolean abstractMethod()_。

8、写出定义最终类IamFinal的类头定义语句:_final class IamFinal_。

9、定义浮点常量PI,其取值为3.1415926:_float PI=3.1415926f_。

三、选择题

1、有关类的说法正确的是()

A.类具有封装性,所以类的数据是不能被访问的

B.类具有封装性,但可以通过类的公共接口访问类中的数据

C.声明一个类时,必须用public修饰符

D.每个类中,必须有main方法,否则程序无法运行

2、将类的成员的访问权限设置为默认的,则该成员能被()

A.同一包中的类访问

B.其他包中的类访问

C.所有的类访问

B.所有的类的子类访问

3、下面是正确的方法重载的是()

A. int fun(int a, float b) { } float fun(int a, float b) { }

B. int fun(int a, float b) { } float fun(int x, float y) { }

C. float fun(float a) { } float fun(float a, float b) { }

D. float fun1(int a, float b) { } float fun2(int a, float b) { }

4、下面关于继承的说法正确的是()

A.超类的对象就是子类的对象

B.一个类可以有几个超类

C.一个类只能有一个子类

D.一个类只能有一个超类

5、下面关于多态性的说法正确的是()

A.一个类中,不能有同名的方法

B.子类中不能有和父类中同名的方法

C.子类中可以有和父类中同名且参数相同的方法

D.多态性就是方法的名字可以一样,但返回的类型必须不一样

最后修改: 2014年03月7日星期五10:42

单元自测4

一、思考题

1、Applet与Application的区别

答:Application是一种可独立运行的程序,Applet是一种存储于Internet/Intranet服务器(Server)上的Java程序,可以被多个客户机下载并在客户端由浏览器提供的Java 虚拟机JVM运行。Applet必须通过标签嵌入HTML程序在浏览器中运行。

2、小应用程序在其生命周期中,init()、start()、stop()、destroy()、paint()方法执行时机?

答:init()初始化,是小应用程序的入口点。执行时机是在第一次浏览web页面时执行一次。

Stat()启动对应的方法,执行时机是浏览器载入程序时执行init()之后、离开上述web页面之后重新回来、使用浏览器的缩放按钮改变窗口大小。

Stop()执行时机是离开小应用程序所在web页面、刷新该页面、关闭该页面、图标化浏览器。

Destroy()执行时机关闭web页面时执行一次。

3、事件处理的基本编程方法?

答:用于监听xxEvent事件的编程的基本方法如下:

第一步:程序开始加上import java.awt.event.*语句。对java.awt中的组

件实现事件处理必须都引入java.awt.event包。

第二步:实现事件监听者所对应的接口,即添加:implements

xxListener(事件所对应的接口)。

第三步:设置事件监听者:事件源.addxxListener(事件监听者)。

第四步:编程实现对应事件接口中的全部方法。

4、Swing与awt的异同

答:awt与swing都是Java用于实现图形用户界面的类库,swing是JFC的一部分,它在技术上比awt迈进了一步; 在外观效果上也比awt有进步。

二、填空题:

1、小应用程序的公共类必须是_java.applet.Applet的子类

2、小应用程序生命期中__init( )_方法只执行一次,__start( )__方法可被反复执行多次

3、将复选框用_java.awt.CheckboxGroup_进行分组即得到单选钮

4、Java.awt.Font类用于设置_文本字体__

5、绘制直线、圆、弧、多边形等绘图方法在_Java.awt.Graphics_包中

最后修改: 2014年03月20日星期四10:48

单元自测5

一、思考题:

1、什么时候发生异常?

答:在程序运行过程中,任何中断正常程序流程的情况都是错误或异常。例如,发生下列情况时,会出现异常:

想打开的文件不存在;

网络连接中断;

操作数超出预定范围,例如,除数为0;

数组元素下标越界。

2、要被监视异常的代码必须放在哪个语句块中?

答:Java中异常处理的一般形式是:

try{

//被监视的代码块}

catch(异常类1 对象名1){

//异常类1的异常处理代码块}

3、catch起什么作用?

答:catch实现异常类型的捕捉。

4、异常未被捕获会发生什么结果

答:若有匹配则执行相应的处理代码,然后继续执行本try块之外的其他程序。否则这个没有被程序捕获的异常将由缺省处理程序处理,缺省处理程序将显示异常的字符串、异常发生位置等信息,终止整个程序的执行并退出。

5、throws起什么作用?

答:编程人员可以用throw语句自行抛出异常,throw语句的语法如下:

throw Throwable类或其子类的对象。

throws语句用于声明一个方法可能引发的所有异常,这些异常是要求调用该方法的程序处理的。其语法为:

返回类型方法名(参数表)throws 异常类型表{ //方法体}

6、在嵌套的try块中,内部代码块没有捕获的异常如何处理?

答:在某个方法中,某一个try块又包含另一try块,当内层try块抛出异常对象时,首先对内层try块的catch语句进行检查,若与抛出异常类型匹配则由该catch处理,否则由外层try块的catch处理。

最后修改: 2014年04月4日星期五15:28

单元自测6

一、思考题

1、线程有哪些特点?

答:线程就是比进程更小的运行单位,一个进程可以被划分成多个线程。在一个支持线程的系统中,线程是处理器的调度对象。一个进程中的线程共享进程的资源。线程之间的通信要比进程之间的通信方便。

2、什么是线程的生命周期?线程的状态是怎样在各种状态下转换的?

答:每个线程都存在一个从创建、运行到消亡的生命周期。在生命周期中,一个线程具有创建、可运行、运行中、阻塞和死亡五种状态。Thread类中的方法可以改变线程的状态。

3、有哪些数据流和文件读写有关?

答:

4、缓冲流在数据输入输出中的作用是什么?

答:

5、当到达文件末尾时,read()返回什么?

答:

二、选择题

1、关于线程,下面说法对的是()

A、一个线程就是一个正在执行的程序

B、线程和线程之间无法通信

C、进程划分成线程,可以减少并发控制的时间

D、一个程序只有一个线程

2、用实现Runnable接口的方法创建线程时要()

A、直接创建线程对象

B、实现start方法

C、通过run方法,启动线程对象

D、先创建线程的目标对象,再通过目标对象创建线程对象

3、Thread类中的wait方法使得()

A、线程终止运行

B、进入可运行状态,在队列中等待执行

C、线程进入死亡状态

D、线程进入阻塞状态

4、用文件字节输出流对文件进行写操作时,先要创建文件输出流对象并打开文件,文件数据流FileOutputStream的构造方法是:

public FileOutputStream(String name,Boolean append) throws FileNotFoundException

其中的参数append的值为true时表示()

A、将原文件的内容覆盖

B、在原文件的尾部添加数据

C、在原文件的指定位置添加数据

D、创建一个新文件

最后修改: 2014年04月5日星期六19:56

系统单元测试规范-4:JAVA单元测试指引

JAVA单元测试指引

1.背景 系统的规模及复杂度与时间及业务的拓展成正比。随着系统的规模不断变大,各子系统内的业务逻辑的新增,系统的代码总数也在不断的增加。部分业务在时间的推移上会发生变化引起系统在代码层面上的重构,系统代码在软件工程的生命周期中不断的迭代和变化。 代码的新增以及重构都需要通过严格测试才能部署上线,公司目前对于上线功能采取的多数是黑盒测试,并未使用白盒测试对研发人员编写的代码进行更高的覆盖测试。而研发人员平时在功能开发完成后进行自测的时候使用的方式也因为个人喜好或各种原因没有形成统一。 因此,系统若能在编译、部署、上线的时候能够对所有功能都进行尽可能全面的白盒测试将会有助于降低系统在升级过程中的故障率,提高系统升级的速度。若能够通过更全面的测试发现代码中的隐藏缺陷,便能提升代码的健壮性,使系统在长期运行中发生更少的问题。 2.需求 研发人员在功能开发结束之后应当同时提交该功能的单元测试用例代码,并且该单元测试用例代码需要满足以下几点需求: 2.1.功能覆盖 1)每个单元测试代码中需要覆盖该功能的所有输入和输出,并对输出进行校验。 2)最终目标每个系统的所有测试用例代码需要覆盖系统的所有功能。(存量系统在后续分 阶段补充)

2.2.测试颗粒化 1)单元测试用例只测试小颗粒的功能。 2)一个单元测试用例只涉及到一个被测模块,避免牵扯到太多的模块。 2.3.测试自动化 1)单元测试的输入,输出以及校验全部自动化,不需要人工干预。 2)系统编译的时候需要自动将所有单元测试执行一次,任意单元测试不通过不允予通过发 布。 2.4.持续维护 1)新添加的功能和模块需要添加相对应的单元测试用例。 2)重构或业务逻辑变更涉及到的功能和模块代码变化需要更新相对应的单元测试用例。 3.方案 基于公司在JAVA语言方面多数系统是采用Maven进行构建的现状以及Maven在系统构建的优势,故采用Maven进行系统构建+Junit进行用例测试的方案实现。 研发人员可以借助Cobertura对自己编写的测试用例进行代码覆盖分析,以便对测试代码进行调整和优化。 3.1.Maven 1)Maven不仅仅能构建项目,同时还是一个依赖管理工具,一个项目管理工具,提供中央 仓库帮助我们自动下载构件,也允许我们上传自己开发的jar包供各系统使用,这些都

java项目经验面试

1:请你介绍一下你自己 您好,我叫刘东,来自湖北武汉,毕业于荆州长江大学信息管理与信息系统专业,在荆州讯腾信息技术有限公司曾担任java软件工程师一职,我爱好软件技术,希望能在新的城市得到更多锻炼与学习的机会。 2:说说你的家庭 家有奶奶,爸妈,姐姐和我,姐姐已婚,家庭温馨稳定,家里人都热爱生活,爸妈很关心我和我姐的学习和工作,全力支持我们。 3:说说你的最大优缺点 优点: 缺点:有时候比较执着,别人说的话听不进去,在以前的开发过程中会纠结某个问题,有些急躁。 4:就你申请的这个职位,你认为你还缺什么? 对于这个职位,缺乏足够的经验、熟悉工作环境和融入到团队中去,但以我的学习能力和适应能力,我相信自己可以胜任的,这个问题我想我可以进入公司以后尽最大的努力,用最短的时间来解决。 5:你期望的工资是多少? 我希望得到6500 6:你还有什么问题吗? 请问贵公司对新入公司的员工有没有什么培训的项目?或者说贵公司的晋升机制是什么样的? 面试进行曲之技术面试(项目经验) 收藏 问题一、请简单的介绍一下你自己吧! 分析:这是在任何面试中都会遇到一个题目,看起来这个问题是十分简单的,但是往往我们并不知道考官问这个题目是希望从你的回答中获得什么信息!所以我们就很容易走题,跑题,不入正题!不能马上就吸引考官。请记住抓住面试的每一个机会来推销自己。但是往往我们不知道从哪里谈起。所以我们得先了解考官想要获取什么信息呢? 1.你的从业时间你从事相关的工作有多长了 2.你的教育背景你是否受过良好的教育 3.你的工作经验你是否有过具有一定的工作经验 4.你的项目经验你是否有过丰富的项目经验 5.你与众不同之处你是怎么进行项目开发的,有什么特别之处,或者你在哪些项目中 取得过哪些成功,或者有哪些自己觉得骄傲的地方 6.你最擅长的地方你最擅长的技术是什么? 7.你的性格你是怎么样的一个人 教育背景:如果你上的大学及所上的专业比较对口,就说出来,非否就不要提了.总之是要扬长

JUnit in java单元测试用例实战

JUnit in java单元测试用例实战 单元测试基础 当今软件测试十分盛行时,本人通过项目实践和个人亲身体会浅谈单元测试,本人一直坚持“用代码说话的原则”,同时也希望个人能给出宝贵意见,共同探讨、共同进步,为中国软件事业有更大的发展共同奋斗! 最早我们项目组开发的项目时,写代码都是从底层一直写到表现层到jsp,然后开发人员在web层调试页面,近乎98%都会报一大堆exception,然后再在代码中加断点一步一步查到底哪一层代码出现问题……,比较好点做法就是在各个类中加上main方法测试,但总体很不理想,给web层开发人员的调试和质量控制人员带来繁重的工作压力;使用单元测试后,针对每一个方法都做严格的把关,大大减少调试的时间;同时质量控制人员返回过来的bug 少了近60%,现在对于开发人员写测试用例非常熟练,并且本人根据实际情况对测试用例做了点小小改动(这部分主要在后面代码中详述),带来很好的效果! 单元测试到底给实际开发带来什么好处那? (1)首先对于开发人员来说大大减少调试工作的时间,同时也规范了对于代码安全管理(我们知道那些方法是可以调用的); (2)对于整个项目来说,有了完整的测试,保证项目最后交付测试有了可靠依据; (3)对于测试人员大大减少bug的反馈; (4)对于项目经理整个项目达到很好的可控; (5)最主要的完整的单元测试给后期维护人员带来很大的便捷! 单元测试好处可能还有很多,但本人只能理解和感悟这么多,希望观者补充! 单元测试配置: 将使用eclipse+myEclopse给大家介绍关于JUNIT的环境的简单配置;右键点击项目选择“属性”,在弹出窗口中到环境变量中添加junit.jar包,这样下一步我们就可以进行单元测试了;

java试题测试

JA V A方面 1 面向对象的特征有哪些方面封装、继承、多态 封装、继承、多态 2 String是最基本的数据类型吗? 不是 3 int 和Integer 有什么区别 Integer 作用范围以及其的方法比int多 4 String 和StringBuffer的区别 String长度不可以改变StringBuffer可以 5运行时异常与一般异常有何异同? 一般异常需要在编译时就抛出异常或者try/catch,运行时异常不用 6 说出一些常用的类,包,接口,请各举5个 常用的类String,StringBuffer,Integer, ArrayList, Collentions 常用接口HashSet,HashMap,Connection,Statement,ResultSet 7 说出ArrayList,Vector,Arraylinked的存储性能和特性 ArrayList,Vector他们两个都是线性表,用于查询数据比较快,但ArrayList不是线程安全的,Vector是线程安全的. Arraylinked是链式表,用于增加修改删除数据比较快 8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。9.JSP的内置对象及方法。 Jsp内置对象有Session,Request,Page,Applycation, 内置方法有out() request() session()等 10.用socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。11说出Servlet的生命周期,并说出Servlet和CGI的区别。 12.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 13.EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?14.说出数据连接池的工作机制是什么? 15同步和异步有和异同,在什么情况下分别使用他们?举例说明。 16应用服务器有那些? Weblogic,JBoss,websphere 17你所知道的集合类都有哪些?主要方法? ArrayList,Vector,Arraylinked Add() remove() size() 18给你一个:驱动程序A,数据源名称为B,用户名称为C,密码为D,数据库表为T,请用JDBC 检索出表T的所有数据。 19.说出在JSP页面里是怎么分页的? 数据库方面: 1.存储过程和函数的区别 函数可应用于一条执行的Sql语句,存储过程不可以 2.事务是什么? 事务就是数据库提供的一种处理数据的机制 3.游标的作用?如何知道游标已经到了最后? 4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有 何区别。 Java 面试常见问题!

编写更好的Java单元测试的七个技巧

编写更好的Java单元测试的七个技巧 测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。 作者:小峰来源:码农网|2016-12-13 10:06 收藏 分享 测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。 虽然有三种主要类型的软件测试:单元测试,功能测试和集成测试,但是在这篇博文中,我们将讨论开发人员级单元测试。在我深入讲述具体细节之前,让我们先来回顾一下这三种测试的详细内容。 软件开发测试的类型

单元测试用于测试各个代码组件,并确保代码按照预期的方式工作。单元测试由开发人员编写和执行。大多数情况下,使用JUnit或TestNG之类的测试框架。测试用例通常是在方法级别写入并通过自动化执行。 集成测试检查系统是否作为一个整体而工作。集成测试也由开发人员完成,但不是测试单个组件,而是旨在跨组件测试。系统由许多单独的组件组成,如代码,数据库,Web服务器等。集成测试能够发现如组件布线,网络访问,数据库问题等问题。 功能测试通过将给定输入的结果与规范进行比较来检查每个功能是否正确实现。通常,这不是在开发人员级别的。功能测试由单独的测试团队执行。测试用例基于规范编写,并且实际结果与预期结果进行比较。有若干工具可用于自动化的功能测试,如Selenium和QTP。 如前所述,单元测试可帮助开发人员确定代码是否正常工作。在这篇博文中,我将提供在Java中单元测试的有用提示。 1.使用框架来用于单元测试 Java提供了若干用于单元测试的框架。TestNG和JUnit是最流行的测试框架。JUnit和TestNG的一些重要功能: ?易于设置和运行。 ?支持注释。 ?允许忽略或分组并一起执行某些测试。 ?支持参数化测试,即通过在运行时指定不同的值来运行单元测试。 ?通过与构建工具,如Ant,Maven和Gradle集成来支持自动化的测试执行。 EasyMock是一个模拟框架,是单元测试框架,如JUnit和TestNG的补充。EasyMock本身不是一个完整的框架。它只是添加了创建模拟对象以便于测试的能力。例如,我们想要测试的一个方法可以调用从数据库获取数据的DAO类。在这种情况下,EasyMock可用于创建返回硬编码数据的MockDAO。这使我们能够轻松地测试我们意向的方法,而不必担心数据库访问。

java基础测试

JA V A基础测试 一、单项选择题 1、关于构造方法,下列叙述不正确的是()。 A、构造方法是类的一种特殊方法,它的方法名称必须与类名相同。 B、一般在创建新对象时,系统会自动调用构造方法。 C、可以在构造方法中的任何地方用super()调用父类的构造方法。 D、构造方法的主要作用是完成对类的对象的初始化工作。 2、下列属于对象的是() A、猫 B、汽车 C、自行车 D、自己的头 3、下列选项中描述正确的是( ) A、接口中可以有常量、抽象方法和构造方法。 B、抽象类中可以有抽象方法,也可以没有抽象方法,可以被别的类继承,可以用来实例化一个对象 C、static可以修饰类中的成员变量,也可修饰方法中定义的变量。 D、final可以用来修饰类、类中的成员变量和方法中定义的变量。 4、在java中,包有多种用途,但不包含() A、将类组合成较小的单元,便于使用 B、有助于避免命名冲突 C、有助于提高运行效率 D、允许在更广的范围内保护类、数据和方法 5、在java 中,com包中某类的方法使用下列()访问修饰符后,可以被com.db 包中的子类访问,但不能被com.db 中其他类访问 A、private B、protected C、public D、friendly 6、FILE类中的isFile()方法表示( ) A、创建文件 B、判断是否是文件 C、判断是否是文件夹 D、修改文件 7、不是用于数据结构的类是( ) A、Math B、Stack类 C、LinkedList类 D、Vector类 8、下列代码会出现什么情况?()。 class People{ public People(int i){} public static void main(String[] args){ People p = new People(); System.out.println(“ok”); } } A、编译错误 B、运行时错误 C、无错误但无输出 D、显示出OK 9、下面()Java关键字表示一个对象或变量的值不能够被修改 A、static

java单元测试教程

如对您有帮助,请购买打赏,谢谢您! 单元测试教程 1、概述 Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。 Junit本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用Junit进行自动测试了。 由于Junit相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的test first design的实现有了现成的手段:用Junit写测试代码,写实现代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功。以后对代码的修改和优化,运行测试成功,则修改成功。 Java 下的team 开发,采用cvs(版本控制) + ant(项目管理) + junit(集成测试) 的模式时,通过对ant的配置,可以很简单地实现测试自动化。 对不同性质的被测对象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧,以后慢慢地分别讲叙。以下以Class测试为例讲解,除非特殊说明。 2、下载安装 ?去Junit主页下载最新版本 ?用winzip或unzip将junit- ?将junit.jar和$JUNITHOME/junit加入到CLASSPATH中,加入后者只因为测试例程在那个目录下。?注意不要将junit.jar放在jdk的extension目录下 ?运行命令,结果如右图。 java 3、Junit架构 下面以Money这个类为例进行说明。 public class Money { private int fAmount;//余额 private String fCurrency;//货币类型 public Money(int amount, String currency) { fAmount= amount; fCurrency= currency; } public int amount() { return fAmount; } public String currency() { return fCurrency; } public Money add(Money m) {//加钱 return new Money(amount()+m.amount(), currency()); }

java语言程序设计二级考试模拟试卷

Java语言程序设计二级考试模拟试卷一 (考试时间90分钟,满分100分) 一、选择题(1~20题每题2分,20~30题每题3分,计70分) 在下列各题的A、B、C、D、四个选项中,只有一个选项是确定的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 1、下列叙述中正确的是()。 A、线性表是线性结构 B、栈和队列是非线性结构 C、线性链表是非线性结构 D、二叉树是线性结构 2、下列关于队列的叙述中正确的是()。 A、在队列中只能插入数据 B、在队列中只能删除数据 C、队列是先进先出的线性表 D、队列是先进后出的线性表 3、设有下列二叉树: 对此二叉树前遍历的结果是()。 A、ABCDEF B、DBEAFC C、ABDECF D、DEBFCA 4、设树T的度为4,其中度为1、2、3、4的结点个数分别是4,2,1,1。则T中的叶子结点数是()。 A、8 B、7 C、6 D、5 5、结构化程序设计主要强调的是()。 A、程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 6、下面对对象概念描述错误的是()。 A、任何对象都必须有继承性 B、对象是属性和方法的封装体 C、对象间的通讯靠消息传递 D、操作是对象的动态属性 7、在软件测试中,以发现各模块内部可能存在的各种错误为目的的测试是()。 A、集成测试 B、单元测试 C、黑盒测试 D、白盒测试 8、软件需求分析阶段的工作,可以分为四个方面,需求获取、需求分析、编写需求规格说明书以及()。 A、阶段性报告 B、需求评审 C、总结 D、信息隐藏 9、在关系数据库中,用来表示实体之间联系的是()。 A、树结构 B、网结构 C、线性表 D、二维表

【DOC】面向对象程序设计(Java)单元测试3

《面向对象程序设计(Java)》单元测试3 班级姓名 一填空与选择题 1.Java中,InputStream和OutputStream是以()为数据读写单位的输入输出流的基类,Reader和Writer是以()为数据读写单位的输入输出流的基类。 2.用来创建以字节方式对文件进行读写的流是()类和()类。 3.从对异常的处理策略上,Java把异常分为非检查型异常和检查型异常,非检查型异常包括()异常和()异常,编译时编译器不对非检查型异常进行检查;对检查型异常,编译器要求要么对异常进行()处理,要么进行()处理。 4.建立文件"file.txt" 的字节输入流的语句是:() A. InputStream in=new FileInputStream("file.txt"); B. FileInputStream in=new FileInputStream(new File("file.txt")); C. InputStream in=new FileReader("file.txt"); 5.创建一个DataOutputStream 的语句是:() A. new DataOutputStream("out.txt"); B.new DataOutputStream(new File("out.txt")); C. new DataOutputStream(new Writer("out.txt")); D. new DataOutputStream(new OutputStream("out.txt")); E. new DataOutputStream(new FileWriter("out.txt")); F. new DataOutputStream(new FileOutputSream("out.txt")); 6.下面语句正确的是:() A. RandomAccessFile raf=new RandomAccesssFile(“myfile.txt”,”rw”); B. RandomAccessFile raf=new RandomAccesssFile(new DataInputStream()); C. RandomAccessFile raf=new RandomAccesssFile(“myfile.txt”); D. RandomAccessFile raf=new RandomAccesssFile(new File(“myfile.txt”)); 7.下列创建InputStreamReader对象的方法中哪些是正确的方法? A. new InputStreamReader(new FileInputStream(“data”)); B. new InputStreamReader(new FileReader(“data”)); C. new InputStreamReader(new BufferedReader(“data”)); D. new InputStreamReader(“data”); E. new InputStreamReader(System.in); 二.编一程序,从键盘输入一个实数,求其平方根并输出。要求对输入为负数和非数字的数据时所产生的异常进行捕获处理,并给出提示信息。

Java 十大单元测试和自动化集成测试工具

Java 程序员需要用到十大单元测试和自动化集成测试工具 一个优秀的程序员,必然能够很好地利用手头上的工具,因此我总在业余时间学习和探索新的工具和库,以下列表是我部分研究成果。 在这篇文章中,将分享10 个最为优秀且必不可少的工具,框架和库,这些可以帮助java 程序员在各类java 项目中编写单元测试和集成测试。 JUnit JUnit 无须赘述,即便是初级Java程序员,可能也已经听说过它,你可以使用它编写Java 代码的单元测试。 几乎所有主流IDE,例如Eclipse,NetBeans 和IntelliJ,都集成了JUnit,可以直接在这些IDE中编写和运行单元测试。 大多数人仍在使用JUnit 4,即使JUnit 5 已经发布,它很可能是今年下一个热点。通过JUnit 5,可以将JUnit 同时应用于单元测试和集成测试,并且它还支持Java 8 的特性。 REST Assured

用Java 语言测试和验证REST 服务,要难于Groovy 这类动态语言。 REST Assured 将这类语言的易用性带入了Java 领域,是一个优秀的REST API 的集成测试工具。 Selenium Selenium 很可能是最流行的Java UI 测试工具了,它可以让你在不必启动浏览器的情况下测试JSP 页面。 你可以使用JUnit 和Selenium 来测试Web 程序的界面,它甚至允许你编写Web 应用程序的验收测试。 TestNG TestNG 是一个测试框架,其灵感来自JUnit 和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。例如可以使用注解,在任意大的线程池中,配置各种可用策略进行测试(例如所有方法都在自己的线程中,每一个测试类使用一个线程等)。

基于JUnit的单元测试报告

实验3 基于JUnit的单元测试 一、实验目的与要求 1、通过动手实际操作,巩固所学的单元测试相关知识 2、初步了解JUnit工具的使用方法,加深对单元测试的认识 3、熟悉eclipse工具的基本操作,掌握基于Eclipse工具的Java编程 4、学会使用EclEmma对测试覆盖率进行分析 5、通过实际代码案例,掌握单元测试的操作步骤 二、实验设备 1、电脑PC 2、Eclipse 3、Junit工具 4、EclEmma工具 三、实验过程 步骤一:确定单元测试方案 本实验选择StringUtils.java类中的四个方法作为Java单元测试的对象,选用Eclipse作为Java开发工具,下载并安装JUnit和EclEmma工具,使用JUnit进行单元测试,使用EclEmma进行覆盖率分析来辅助进行单元测试。 步骤二:JUnit的下载安装 JUnit是一个开源的Java测试框架,是单元测试框架体系xUnit的一个实例,目前已经成为Java单元测试的标准。JUnit软件包可以从网站http:https://www.doczj.com/doc/2917145962.html, 中下载,本次实验中使用的是JUnit4.10版本。 无须解压JUnit压缩包,选中eclipse中的工程,在Eclipse菜单Project的子项Properties中选择Java Build Path,单击Libraries标签,单击Add External JARs 按钮,选择junit4.10.jar后单击“打开”按钮,完成JUnit安装,安装完成后重启Eclipse,如图3-1所示。

图3-1在Eclipse中安装JUnit 步骤三:EclEmma的下载与安装 EclEmma是一个开源的覆盖率工具,可以帮助大家在单元测试的时候分析代码覆盖情况,可从网站https://www.doczj.com/doc/2917145962.html,/download.html中下载Jacoco 的Eclipse插件EclEmma最新版,本实验中使用的是Eclemma3.1.2版本解压eclemma-3.1.3.zip到Eclipse安装路径下的dropins目录中,并且保留如图3-2中的文件和文件夹。打开Eclipse,在工具栏help菜单中选择Install New Software,在Install窗口中单击Add按钮,并在Local的弹出框中选择EclEmma所在路径,添加name,完成后在Install列表中勾选展示的EclEmma 程序,单击Next按钮直到安装完成,如图3-3所示,安装完成后重启Eclipse,工具栏中会出现一个Coverage图标,如图3-4所示。 图3-2将eclemma解压到Eclipse的dropins路径下

java 单元测试 junit4 性能框架 junitperf 入门使用说明

junitperf junitperf一款为 java 开发者设计的性能测试框架。 缘由 在看性能测试相关内容时发现这类框架(Junit 性能测试框架)。 个人初步参考以下2个项目进行实现,后续可能走完全不同的路线。为什么使用? ?可以和 Junit 完美契合。 ?使用简单,便于项目开发过程中的测试实用。 ?提供拓展,用户可进行自定义开发。 特性 ?支持 I18N ?支持多种报告生成方式,支持自定义 ?Junt4 完美支持,便于 Java 开发者使用。 快速开始 项目依赖 ?jdk jdk1.7 及其以上版本 ?junit Junit4 及其以上版本 入门案例 入门案例地址 ?jar 包引入 junit junit 4.12

com.github.houbb junitperf 1.0.2 ?使用例子 /** *入门测试 * * @author houbinbin *@version 1.0.0 *@since 1.0.0,2018/01/14 */ public class HelloWorldTest { @Rule public JunitPerfRule junitPerfRule = new JunitPerfRule(); /** *单一线程,执行1000ms,默认以 html 输出测试结果 * @throws InterruptedException if any */ @Test @JunitPerfConfig(duration = 1000) public void helloWorldTest() throws InterruptedException { //This is what you want to test. System.out.println("hello world"); Thread.sleep(20); } } 配置说明 声明 Rule @Rule public JunitPerfRule junitPerfRule = new JunitPerfRule(); 这里主要是对于性能测试统计的输出方式。支持以下方式: 方式案例 默认方式DefaultReporterTest 命令行ConsoleReporterTest HTML HtmlReporterTest

实验一使用Junit进行单元测试

实验报告 实验名称使用Junit进行单元测试第 1 次实验实验日期 2011-10-16 指导教师程宝雷 班级软件10届学号3 姓名徐玮明成绩 一.目的和要求 JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人员做单元测试之用。当前版本4.1,可以从网站上获得。与早期的JUnit 3相比,JUnit 4.1依赖于Java 5.0的新特性,因此无法兼容于jdk 1.4,可以说是一个全新的框架。 由于这里使用的IDE是Eclipse 3.2.1加语言包,已经集成了junit 4.1,因此便免去下载和配置类库的麻烦了 二.实验内容 参考案例《Junit测试》,完成如下内容 1、创建项目 下面打开Eclipse,点击菜单“文件”->“新建”->“项目”或“新建”按钮,打开“新建”对话框:请选中“Java项目”,点击“下一步”,进入“新建Java项目”对话框:

在这个对话框中需要设置项目的名称以及项目所在目录,我为自己的项目起名为JUnitTest,目录为F:\YPJCCK\JUnit\Eclipse\JUnitTest。由于Eclipse自带了JUnit类库,因此此时点击“完成”即可。 2、编写用于测试的JavaBean 用于测试的JavaBean很简单,名为Book,只有id和name两个属性,这两个属性将分别用于两个用例当中。下面开始编写该JavaBean。 请点击“文件”->“新建”->“类”,打开“新建Java类”对话框,设置包为net.test.unit.junit,名称为Book,并确保“public static void main(String[] args)”选项没有选中,然后点击“完成”。修改代码如下: package net.test.unit.junit; public class Book { private String id = null; private String name = null; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() {

JAVA自动化单元测试工具Junit Factory使用介绍

JA V A自动化单元测试工具Junit Factory使用介绍(开发人员不再需要编写Junit测试用例) 最近在PassPort项目中,很多开发人员都采用了Junit作为单元测试工具,保证代码质量,所以我最近研究了agitar公司的一种免费的junit自动生成的工具-junit factory,agitar公司有一套更优秀的商业软件---自动化单元测试工具agitarone。 Junit是JA V A开发中应用最多的单元测试框架,部门内部也逐渐普及到各个项目开发中,虽然Junit测试框架易学易用,但是还是在保证代码质量的同时增加了开发人员的代码工作量,需要拿出部分时间编写Junit测试代码。Junit Factory就能更好的提高单元测试效率! 原理: Junit Factory和agitarone的一项关键技术就是software agitation,它可以为你自动创建各种测试用例(实际测试必须要测试每一行、每一条分支、甚至每一种输出),而且自动创建的过程是通过对代码的agitation,(一种基于java二进制代码的分析,可以自动得出需要测试的东东)后跟开发者交互来完成的。agitation的这种技术是基于服务器并且是分布式的,可以远程使用,并可以利用多个服务器来完成。 安装: Junit Factory是可以作为eclipse插件使用的,也可以和ant一起使用。部门内主要开发工具是eclipse,所以介绍如何在eclipse下用Junit Factory生成Junit单元测试用例! Download :https://www.doczj.com/doc/2917145962.html,/update/. 1.Eclipse, 选Help ,选Software Updates ,点Find and Install ; 2.选择“Search For New Features to Install”然后“Next”; 3. 选New Remote Site ; 4. 输入一个JUnit Factory网站的注册用户名; 5. 输入url:https://www.doczj.com/doc/2917145962.html,/update/ ; 6. 安装所有plug-ins ; 7. 重新启动eclipse ; 使用: 安装完成后会在eclipse的工具条中出现Generate Tests和Generate Dashboard两个按钮, 使用Generate Tests生成Junit单元测试用例,使用Generate Dashboard查看包或者项目的单元测试结果和带代码分析报告(利用Crap4J进行代码分析,得到Fail数量、Pass数量、覆盖率、代码规范错误、Risk Classes等等)。 操作很简单,不详述! 如图1 源码和生成的Junit测试代码举例 源码源码: /* Instructions: 1. Enter (or paste) some code 2. Hit "Generate a Test"

JAVA单元测试工具比较

软件单元测试工具比较 一、JTEST 1、简介 jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Design by Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。 2、优势 1)使预防代码错误成为可能,从而大大节约成本,提高软件质量和开发效率 2)使单元测试——包括白盒、黑盒以及回归测试成为可能 3)使代码规范检查和自动纠正成为可能 4)鼓励开发团队横向协作来预防代码错误 3、特征 1)通过简单的点击,自动实现代码基本错误的预防,这包括单元测试和代码规范的检查2)生成并执行junit单元测试用例,对代码进行即时检查 3)提供了进行黑盒测试、模型测试和系统测试的快速途径 4)确认并阻止代码中不可捕获的异常、函数错误、内存泄漏、性能问题、安全弱点的问题5)监视测试的覆盖范围

6)自动执行回归测试 7)支持DbC编码规范 8)检验超过350个来自java专家的开发规范 9)自动纠正违反超过160个编码规范的错误 10)允许用户通过图形方式或自动创建方式来自定义编码规范 11)支持大型团队开发中测试设置和测试文件的共享 12)实现和IBM Websphere Studio /Eclipse IDE 的安全集成 4、价格:昂贵 二、JMETER 1、简介 JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。使用JMeter进行性能测试。 2、特征 JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。 3、价格:未知 三、JUNIT

Java语言程序设计单元测试3

临沂师范学院2009—2010学年度第1学期 《Java语言程序设计》单元测试3 I Single-choice Topic (30 points) 1. Assume double m =45.5, Which of the following statement output this variable value? ________ A. System.out.printf(“m =%f”,m); B. System.out.printf(“m =%d”,m); C. System.out.printf(“m =%s”,”m”); D. System.out.printf(“m =%s”,m); 2. Which of the following initializer lists would correctly set the elements of array n? A. int[] n = { 1, 2, 3, 4, 5 ,6,7,8 };. B. array n[ int ] = { 1, 2, 3, 4, 5 ,6,7,8 };. C. int n[ 5 ] = { 1; 2; 3; 4; 5 ;6;7;8 };. D. int n = new int( 1, 2, 3, 4, 5 ,6,7,8);. 3. Which of the following elements should usually be private?________ A.methods B.constructors C.variables (or fields). D.All of the above 4. Analyze the following code and select the correct choice __________ public class Test { public static void main(String[] args) { add(23, 67); } public static void add(int n, int f) {System.out.println("return void”);} public static int add(int x, int y) { System.out.println("return int"); return x; }} A. The program displays return void. B. The program displays long, long. C. The program display an exception. D. The program does not compile because the compiler cannot distinguish which info method to call. 5 What is k after the following block executed? __________ { int i = 2; System.out.println("A message" + i );} A. 1 B. 2 C. 3 D. k is not defined outside the block. 6. The visibility of these modifiers increases in this order:__________. A. private, protected, none (if no modifier is used), and public.

相关主题
文本预览
相关文档 最新文档