Java单元测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java单元测试相关的知识,希望对你有一定的参考价值。
二填空题
1. java 中用 关键字申明包。
2.整型数据基本类型int所对应的封装器类是 。
3.产生一个区间[20,100] 内的随机整数的语句是 。
4.下面程序运行时在命令行输入MyProg me you he she。程序的运行结果是 。
class MyProg
public static void main(String args[])
for(int i=0;i<args.length;i++)
if(i%2==0) System.out.print(args[i]+" ");
System.out.println();
三.编一程序,从键盘输入一个字符串,将其倒序输出。比如:
输入”Hello Java”, 输出为:”avaJ,olleH”.
四、编一程序。要求
1 将自己的学号、姓名、性别写入到目录d:\Personal下的文件Info.dat中。
2 将文件Info.dat中的数据显示在屏幕上。
Junit 是JAVA单元测试使用最多的插件。其他的也还有很多,基本和 Junit的思想是一样的。
请采纳答案,支持我一下。本回答被提问者采纳 参考技术B 单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。
单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。
一般来说,单元测试任务包括
接口功能测试:用来保证接口功能的正确性。
局部数据结构测试(不常用):用来保证接口中的数据结构是正确的
比如变量有无初始值
变量是否溢出
边界条件测试
比如对于Math.sqrt,给出n^2-1,和n^2+1的边界
空集合
对集合的大小应用“数值变量”的边界
调整次序:升序、降序
引用“字符变量”的边界
空字符串
对字符串长度应用“数值变量”的边界
主要边界:最小值,最大值,无穷大(对于DOUBLE等)
溢出边界(期望异常或拒绝服务):最小值-1,最大值+1
临近边界:最小值+1,最大值-1
变量没有赋值(即为NULL)
变量是数值(或字符)
变量是字符串
变量是集合
变量有规律
所有独立执行通路测试:保证每一条代码,每个分支都经过测试
Cobertura:语句覆盖
Emma: Eclipse插件Eclemma
语句覆盖:保证每一个语句都执行到了
判定覆盖(分支覆盖):保证每一个分支都执行到
条件覆盖:保证每一个条件都覆盖到true和false(即if、while中的条件语句)
路径覆盖:保证每一个路径都覆盖到
代码覆盖率
相关软件
各条错误处理通路测试:保证每一个异常都经过测试
JUNIT
JUnit是Java单元测试框架,已经在Eclipse中默认安装。目前主流的有JUnit3和JUnit4。JUnit3中,测试用例需要继承TestCase类。JUnit4中,测试用例无需继承TestCase类,只需要使用@Test等注解。
Junit3
先看一个Junit3的样例
// 测试java.lang.Math
// 必须继承TestCase
public class Junit3TestCase extends TestCase
public Junit3TestCase()
super();
// 传入测试用例名称
public Junit3TestCase(String name)
super(name);
// 在每个Test运行之前运行
@Override
protected void setUp() throws Exception
System.out.println("Set up");
// 测试方法。
// 方法名称必须以test开头,没有参数,无返回值,是公开的,可以抛出异常
// 也即类似public void testXXX() throws Exception
public void testMathPow()
System.out.println("Test Math.pow");
Assert.assertEquals(4.0, Math.pow(2.0, 2.0));
public void testMathMin()
System.out.println("Test Math.min");
Assert.assertEquals(2.0, Math.min(2.0, 4.0));
// 在每个Test运行之后运行
@Override
protected void tearDown() throws Exception
System.out.println("Tear down");
如果采用默认的TestSuite,则测试方法必须是public void testXXX() [throws Exception] 的形式,并且不能存在依赖关系,因为测试方法的调用顺序是不可预知的。
上例执行后,控制台会输出
Set up
Test Math.pow
Tear down
Set up
Test Math.min
Tear down
从中,可以猜测到,对于每个测试方法,调用的形式是:
testCase.setUp();
testCase.testXXX();
testCase.tearDown();
运行测试方法
在Eclipse中,可以直接在类名或测试方法上右击,在弹出的右击菜单中选择Run As -> JUnit Test。
在Mvn中,可以直接通过mvn test命令运行测试用例。
也可以通过Java方式调用,创建一个TestCase实例,然后重载runTest()方法,在其方法内调用测试方法(可以多个)。
TestCase test = new Junit3TestCase("mathPow")
// 重载
protected void runTest() throws Throwable
testMathPow();
;
;
test.run();
更加便捷地,可以在创建TestCase实例时直接传入测试方法名称,JUnit会自动调用此测试方法,如
TestCase test = new Junit3TestCase("testMathPow");
test.run();
java怎么做单元测试,紧急!
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如可以测试一个类,或者一个类中的一个方法。以下是测试用例类的基本结构:
public class HelloWorldTest extends TestCase
/*
* 每次用例执行前要执行的初始化方法
*/
protected void setUp( ) throws Exception
super.setUp();
/*
* 每次用例执行后要执行的清除功能
*/
protected void tearDown( ) throws Exception
super.tearDown();
/*
* 一个测试方法,在其中实现对被测单元的调用,并验证
*/
public final void testCalculate( )
//TODO 实现 calculate()。
参考技术A java很多概念都和C++一样,所以看core java的时候也没有字斟句酌,很多地方都是跳着看的。大概了解了一些细节,比staticmethod,final域等。印象比较深的是static变量,一个class有一个static变量,而其衍生的object都是通用这个变量的。在下面的例子中nextId就是如此了,呵呵,这样来定义id,估计也只是教科书用的,工业上都是采用数据库来处理了。后面提一下,java的单元测试挺有意思的,每一个类都可以整个main函数,就是一个文件里面可以存在多个main函数,要测啥就直接java一下那个类名就可以了,例子如下:public class StaticTestpublic static void main(String[] args)Employee[] staff = new Employee[3];staff[0] = new Employee("Tom", 40000);staff[1] = new Employee("Dick", 60000);staff[2] = new Employee("Harry", 65000);for (Employee e : staff)e.setId();System.out.println("name=" + e.getName() + ", id=" + e.getId() +", salary=" + e.getSalary());int n = Employee.getNextId();System.out.println("Next available id=" + n);class Employeepublic Employee(String n, double s)name = n;salary = s;id = 0;public String getName()return name;public double getSalary()return salary;public int getId()return id;public void setId()id = nextId;nextId++;public static int getNextId()return nextId;public static void main(String[] args)Employee e = new Employee("Harry", 50000);System.out.println(e.getName() + " " + e.getSalary());private String name;private double salary;本回答被提问者采纳
以上是关于Java单元测试的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Spring + EasyMock做Java单元测试
Java应用XVIII在 Java 中使用JUnit5进行单元测试和自动化测试