虽然曾自学过Junit4,但一直停留在会用,却不知道怎么用才合适的阶段,通过学习浪曦的免费视频《J2EE测试使用指南Junit3.8详解》,偶学到了不少关于测试的知识,使我对测试有新的认知和了解一些最佳实践。

keep the bar green to keep the code clean

单元测试不是证明您是对的,而是证明您没有错误.

好了,废话少说,总结这一次的一些知识点。
主要分成两个部分:
一,Junit3.8相关
a)测试类必须继承自junit.framework.TestCase
b)测试方法必须满足以下条件:
                        i.必须是public的
                      ii.返回值是void的,即无返回值
                    iii.无参数的
                     iv.以test开头的,junit3.8以反射的方式获取test开头的方法名并调用。
c)setUp方法:在调用每个测试方法前会调用。比如在setUp中重新实例化要测试的对象可以保证测试方法里面的测试对象都是新的。
d)tearDown方法:在调用完每个测试方法后会被调用。(setUp和tearDown方法是Override TestCase中定义的方法,应该是使用模板设计模式。)
e)junit3.8不存在在所有测试方法执行之前执行一个方法,所有测试方法执行以后执行一个方法的方式(仅执行一次),这是它的一个弊端,但4.0以后就支持了。
f)批量执行测试,看代码:
public class AllTests
{
    public static Test suite()
    {
       // TestSuite表示一个测试的序列或者组(包),可以通过addTestSuite方法来添加要测试的类,也可以添加测试的套件(包)。
        TestSuite sutie = new TestSuite(“suite name”);
        suite.addTestSuite(TestClass1.class);
        suite.addTestSuite(TestClass2.class);
        //….
        return suite;
    }
}
g)Junit3.8中没有一种方式可以使抛出指定的异常类型的测试方法通过测试,只能用手动的方式来检查异常的类型。Juint4.0后可以。
h)Junit不依赖于IDE,本身就提供了运行测试的UI界面,可以调用以下这些包的TestRunner.run(测试类.class)方法来运行并查看测试结果。
                        i.junit.textui 命令行方式,这里要说明一下运行的结果第一行打印出来的点“.”表示运行的一个测试方法。
                      ii.junit.awtui  以awt构建的UI界面
                    iii.junit.swingui 以swing构建的UI界面
二,测试的知识和最佳实践。
a)在eclipse的项目中建立一个Source Folder,如test,然后在这个Source Folder建立跟要测试的类所在的包同名的包,然后在这个包下的创建测试类。这样编译后产生的源代码class文件和测试用的class文件在同一个包下,而且测试类可以不用导入要测试的类。
b)测试类的命名:在要测试的类的名称后加Test。如要测试的类名称为Date,测试类的命名为DateTest。
c)在测试中往往会对一个方法进行不同方式的测试,即一个方法对应多个测试方法,可以在方法的后缀添加2,3,4,5…加以区分。
d)测试方法之间互不干扰,一个测试方法的结果不能依赖于之前的测试结果或是输出。
e)断言的相关最佳实践
                        i.如果某个方法期望是正常运行的却抛出异常(需要catch的),可以在catch代码块中使测试fail。
                      ii.如果某个方法期望是抛出异常的却没有抛出,可以在该方法执行后使测试fail。
                    iii.对一个有参数的方法进行测试一般要测试参数的边界值,空值情况。(自己总结)

转载于:https://www.cnblogs.com/DeguangLi/archive/2010/06/04/1751564.html

浪曦视频《J2EE测试使用指南Junit3.8详解》学习总结相关推荐

  1. C++11 并发指南四(future 详解三 std::future std::shared_future)

    上一讲<C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)>主要介绍了 <future> 头文件中的 std::pack ...

  2. C++11 并发指南四(future 详解二 std::packaged_task 介绍)

    上一讲<C++11 并发指南四(<future> 详解一 std::promise 介绍)>主要介绍了 <future> 头文件中的 std::promise 类, ...

  3. C++11 并发指南三(Lock 详解)(转载)

    multithreading 多线程 C++11 C++11多线程基本使用 C++11 并发指南三(Lock 详解) 在 <C++11 并发指南三(std::mutex 详解)>一文中我们 ...

  4. python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  5. 即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型

    1.引言 大家好,我是刘华平,从毕业到现在我一直在从事音视频领域相关工作,也有一些自己的创业项目,曾为早期Google Android SDK多媒体架构的构建作出贡献. 就音频而言,无论是算法多样性, ...

  6. Python视频剪辑基础教程:MoviePy VideoClip详解

    Python视频剪辑基础教程:MoviePy VideoClip详解 随着数字化媒体的快速发展,视频成为了现代社会最为流行的媒介之一.在如此多样化的数字化媒体中,视频编辑技术被誉为其中最为关键的技能之 ...

  7. jquery制作html小游戏,JQuery手速测试小游戏实现思路详解

    (-1)写在前面 我用的chrome49,jquery3.0,我得到过399分,信不信由你. (1)设计思路 两个p元素放在div里,每个p元素的高度和宽度都和div一样,当鼠标放在div上时,第一个 ...

  8. python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  9. Nginx指南和配置详解

    Nginx指南 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 因它的稳定性 ...

  10. C++11 并发指南四(future 详解一 std::promise 介绍)

    前面两讲<C++11 并发指南二(std::thread 详解)>,<C++11 并发指南三(std::mutex 详解)>分别介绍了 std::thread 和 std::m ...

最新文章

  1. windows java 小程序_JAVA第一个窗体小程序
  2. Linux / CentOs 7搭建DHCP服务
  3. 图中长度为k的路径的计数
  4. 【错误记录】360 加固后的运行错误 ( 加固 SO 动态库时不能对第三方动态库进行加固 )
  5. 在Lucene.net实现自定义排序
  6. 【FLASH BUILDER 4.6 快捷键】只记几个对自己有帮助的
  7. cJSON_译(C中的超轻量级JSON解析器)
  8. 计算机二级vb2003年4月考试题,2003年4月全国计算机等级考试二级vb笔试真题附答案...
  9. 精品教程--Android组件详解
  10. 用Fiddler调试localhost
  11. Python基本语法(快速入门)
  12. 在Ubuntu下看各种格式的电影──包括RMVB
  13. VirtualBox开启USB的方法
  14. Acwing 1299. 五指山
  15. 华为2022硬件工程师招聘全程经验
  16. 最常用的35中心里效应
  17. 温习古文之念奴娇·赤壁怀古
  18. 找出相似的图片--C#
  19. 多旋翼无人机组成(小白上路)
  20. 你们知道第一个发Nature的中国人是谁吗?

热门文章

  1. linux系统开启ntp服务器配置,Linux系统 NTP服务器配置详解
  2. ARCore学习——软件准备及网站
  3. 数据库实验一、实验二、实验三、实验四
  4. 自学测试的看过来:【全网最全超大型软件测试从零开始学习攻略】
  5. 有道词典Chrome划词插件
  6. 蓝鸽集团云计算机,‎App Store 上的“蓝鸽教育云”
  7. c++ primer 5学习小结
  8. Qt实现提示音以及QSound的使用说明
  9. 图像识别--利用百度API免费调用
  10. radius mysql md5_radius协议采用什么传输 radius协议中md5加密函数的参数怎么处理