Junit3.8
使用Junit的最佳实践:新建一个名为test的source folder,用于存放测试类源代码目标类与测试类应该位于同一个包下面,这样测试类中就不必导入源代码所在的包,因为他们位于同一个包下面
测试类的命名规则:假如目标类是Calculator,那么测试类应该命名为TestCalculator或者是CalculatorTest
Junit:单元测试不是为了证明是对的,而是为了证明没有错误。
测试用例(Test Case)是单元测试的一个很重要的方面。测试类必须要继承于TestCase父类。
单元测试主要是用来判断程序的执行结果与自己期望的结果是否一致。
在junit 3.8中,测试方法需要满足如下原则:public的,void的,无方法参数,方法名称必须以test开头.
Test Case之间一定要保持完全的独立性,不允许出现任何的依赖关系。我们不能依赖于测试方法的执行顺序。
关于setUp与tearDown方法的执行顺序:
setUp()
testXXX()//测试方法
tearDown()
测试之前是什么状态,测试执行完毕后就应该是什么状态,而不应该由于测试执行的原因导致状态发生了变化。
代码示例:
package junit; public class Largest
{
public int getLargest(int[] array) throws Exception
{
if(null == array || 0 == array.length)
{
throw new Exception("数组不能为空!");
} int result = array[0]; for(int i = 0; i < array.length; i++)
{
if(result < array[i])
{
result = array[i];
}
} return result;
}
} /*
*测试方法
*/
package junit; import junit.framework.Assert;
import junit.framework.TestCase; public class LargestTest extends TestCase
{
private Largest largest; public void setUp()
{
largest = new Largest();
} public void testGetLargest()
{
int[] array = { 1, 9, -10, -20, 23, 34 }; int result = 0; try
{
result = largest.getLargest(array);
}
catch (Exception ex)
{
Assert.fail("测试失败");
} Assert.assertEquals(34, result);
} public void testGetLargest2()
{
Throwable tx = null; int[] array = {}; try
{
largest.getLargest(array); Assert.fail("测试失败");
}
catch (Exception ex)
{
tx = ex;
} Assert.assertNotNull(tx); Assert.assertEquals(Exception.class, tx.getClass()); Assert.assertEquals("数组不能为空!", tx.getMessage());
} public void testGetLargest3()
{
Throwable tx = null; int[] array = null; try
{
largest.getLargest(array); Assert.fail();
}
catch (Exception ex)
{
tx = ex;
} Assert.assertNotNull(tx); Assert.assertEquals(Exception.class, tx.getClass()); Assert.assertEquals("数组不能为空!", tx.getMessage());
}
}
Junit3.8的更多相关文章
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- Junit3断言
在Robotium自动化测试的过程中,发现没有断言的脚本是没有意义的,现整理Junit3和Junit4的断言,供日后查阅. http://junit.org/ Junit3断言API: http:// ...
- Junit3与Junit4的区别
Junit4最大的亮点就是引入了注解(annotation),通过解析注解就可以为测试提供相应的信息,抛弃junit3使用命名约束以及反射机制的方法. /** * 被测试类 */ package co ...
- 三分钟掌握 JUnit3.0
曾经公司做过一个.net的项目,在项目开发的过程中.我们採用的是分层的开发方式,大家先在一起讨论接口, 然后讨论完以后,形成文档,然后依照文档进行开发!这样就有一个问题,你必需要保证你的接口是正确的. ...
- JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
之前一篇博文(JUnit基础及第一个单元测试实例(JUnit3.8))介绍了用JUnit做单元测试的基本方法,并写了一个简单的类Calculator,其中包含了整型加减乘除的简单算法. 本文通过完善其 ...
- junit3对比junit4
本文内容摘自junit实战,感谢作者的无私奉献. 个人觉得每个开源包的版本对比意义不大,闲来无事,这里就来整理一下好了.本文名为junit3对比junit4,但是我通过这篇博客主要也是想统一的来整理下 ...
- JUnit3 和 JUnit4的区别
JUnit3 和 JUnit4的区别 1.JUnit 4使用org.junit.*包而JUnit 3.8使用的是junit.Framework.*;为了向后兼容,JUnit4发行版中加入了这两种包. ...
- Junit3和Junit4使用区别
在项目经常会用到单元测试,这里对Junit在开发中的使用标准及使用方法进行简单的介绍. 1.包目录的定义以及相关jar包的添加 2.Junit3和Junit4分别对测试类的编写 所测试的源代码: pa ...
- junit3和junit4的区别总结
先来看一个例子: 先用junit3来写测试用例,如下: junit3测试结果: 从上面可看出: 1.junit3必须要继承TestCase类 2.每次执行一个测试用例前,junit3执行一遍setup ...
- junit3和junit4的使用区别如下
junit3和junit4的使用区别如下1.在JUnit3中需要继承TestCase类,但在JUnit4中已经不需要继承TestCase2.在JUnit3中需要覆盖TestCase中的setUp和te ...
随机推荐
- C++:函数模板与模板函数
6.1 模板的概念 C++允许用同一个函数定义函数,这些函数的参数个数和参数类型不同.例如求最大值的max函数, int max(int x,int y) { return (x>y ...
- C++:运算符重载函数
5.运算符重载 5.1 在类外定义的运算符重载函数 C++为运算符重载提供了一种方法,即在运行运算符重载时,必须定义一个运算符重载函数,其名字为operator,后随一个要重载的运算符.例如,要重载& ...
- 4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等
1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为tr ...
- IOS判断手机型号
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CG ...
- [HDOJ4612]Warm up(双连通分量,缩点,树直径)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 所有图论题都要往树上考虑 题意:给一张图,仅允许添加一条边,问能干掉的最多条桥有多少. 必须解决 ...
- VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?
先随便找一个熟悉的函数,右击-转到定义,然后写出目标函数,右击-转到定义
- C++ STL之迭代器注意事项
1.两个迭代器组成的区间是前闭后开的 2.如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效 http://blog.csdn.net/hsujouchen/article/det ...
- sqlserver得到昨天的数据
SELECT * FROM test where DATEDIFF(d,witdate,getdate()) = 1 witdate表示的比较字段
- javac编译过程
编译器把一种语言规范转化为另一种语言规范的这个过程需要哪些步骤:
- Qt之进程间通信(QProcess)
简述 QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序.与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程.可以注册QS ...