Unit Test Lesson 1
1. 使用Junit的最佳实践:
1) 新建一个名为test的source folder,用于存放测试类源代码
2) 目标类与测试类应该位于同一个包下面,这样测试类中就不必导入源代码所在的包,因为他们位于同一个包下面
3) 测试类的命名规则:假如目标类是Calculator,那么测试类应该命名为TestCalculator或者是CalculatorTest
2. Junit的口号:keep the bar green to keep the code clean。
3. 我的名言:No reflection, no most frameworks
4. Junit:单元测试不是为了证明您是对的,而是为了证明您没有错误。
5. 测试用例(Test Case)是单元测试的一个很重要的方面。
6. 单元测试主要是用来判断程序的执行结果与自己期望的结果是否一致。
7. 测试类必须要继承于TestCase父类。
8. 在junit 3.8中,测试方法需要满足如下原则:
1). public的
2). void的
3). 无方法参数
4). 方法名称必须以test开头
9. Test Case之间一定要保持完全的独立性,不允许出现任何的依赖关系。
10. 我们不能依赖于测试方法的执行顺序。
11. DRY(Don’t Repeat Yourself)。
12. 关于setUp与tearDown方法的执行顺序:
1) setUp
2) testAdd
3) tearDown
13. 两个作业(MyStack的测试用例的编写,文件删除方法的测试用例的编写)
14. 测试之前是什么状态,测试执行完毕后就应该是什么状态,而不应该由于测试执行的原因导致状态发生了变化。
Unit Test Lesson 2
1. 测试类的私有方法时可以采取两种方式:
1) 修改方法的访问修饰符,将private修改为default或public(但不推荐采取这种方式)。
2) 使用反射在测试类中调用目标类的私有方法(推荐)。
2. TestSuite(测试套件):可以将多个测试组合到一起,同时执行多个测试。
3. JUnit 4全面引入了Annotation来执行我们编写的测试。
4. JUnit 4并不要求测试类继承TestCase父类。
5. 在一个测试类中,所有被@Test注解所修饰的public,void方法都是test case,可以被JUnit所执行。
6. 虽然JUnit 4并不要求测试方法名以test开头,但我们最好还是按照JUnit 3.8的要求那样,以test作为测试方法名的开头。
7. 在JUnit 4中,通过@Before注解实现与JUnit 3.8中的setUp方法同样的功能,通过@After注解实现与JUnit 3.8中的tearDown方法同样的功能。
8. 在JUnit 4中,可以使用@BeforeClass与@AfterClass注解修饰一个public static void no-arg的方法,这样被@BeforeClass注解所修饰的方法会在所有测试方法执行前执行;被@AfterClass注解所修饰的方法会在所有测试方法执行之后执行。
9. @Ignore注解可用于修饰测试类与测试方法,当修饰测试类时,表示忽略掉类中的所有测试方法;当修饰测试方法时,表示忽略掉该测试方法。
10. 参数化测试(Parameters):当一个测试类使用参数化运行器运行时,需要在类的声明处加上@RunWith(Parameterized.class)注解,表示该类将不使用JUnit内建的运行器运行,而使用参数化运行器运行;在参数化运行类中提供参数的方法上要使用@Parameters注解来修饰,同时在测试类的构造方法中为各个参数赋值(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
11. 在JUnit 4中,如果想要同时运行多个测试,需要使用两个注解:@RunWith(Suite.class)以及@Suite.SuiteClasses(),通过这两个注解分别指定使用Suite运行器来运行测试,以及指定了运行哪些测试类,其中的@SuiteClasses中可以继续指定Suite,这样JUnit会再去寻找里面的测试类,一直找到能够执行的Test Case并执行之。
12. JUnit在TestCase类中应用了模板方法模式:
13. JUnit在TestCase类中应用了适配器(Adapter)模式:
在runBare方法中,通过runTest方法将我们自己编写的testXXX方法进行了适配,使得JUnit可以执行我们自己编写的Test Case,runTest方法的实现如下:
在runTest方法中,首先获得我们自己编写的testXXX方法所对应的Method对象(不带参数),然后检查该Method对象所对应的方法是否是public的,如果是则调用Method对象的invoke方法来去执行我们自己编写的testXXX方法。
Unit Test Lesson 3
1. 适配器模式(Adapter Pattern)主要分为三种:
1) 基于类的继承方式
2) 基于对象组合方式
3) 缺省的适配器模式(AWT,Swing事件模型所采用的模式)
2. 我们学习过的设计模式:(最常用的的几种模式)
1) 单例模式(singleton)
2) 策略模式(Strategy)
3) 代理模式(static proxy, dynamic proxy)
4) 观察者模式(Observer)(红色的为junit使用的模式)
5) 装饰模式(Decorator)
6) 工厂方法模式(Factory Method)
7) 模板方法模式(Template Method)
8) 适配器模式(Adapter)
9) 命令模式(Command)
10)组合模式(Composite)
3. 组合模式(Composite),组合模式有两种实现方式:
1) 将管理子元素的方法定义在Composite类中
2) 将管理子元素的方法定义在Component接口中,这样Leaf类就需要对这些方法空实现。
4. JUnit中要区分错误(error)与失败(failure)
1) 错误指的是代码中抛出了异常等影响代码正常执行的情况,比如抛出了ArrayIndexOutOfBoundsException,这就叫做错误。
2) 失败指的是我们断言所期待的结果与程序实际执行的结果不一致,或者是直接调用了fail()方法,这叫做失败。
5. JUnit中所使用的观察者模式
6. 对于测试类来说,如果一个测试类中有5 个测试方法,那么JUnit 就会创建5 个测试
类的对象,每一个对象只会调用一个测试方法(为了符合命令模式的要求),在添加
方法之前,需要首先判断测试方法是否满足public,void,no-arg,no-return 这些条件,
如果满足则添加到集合当中准备作为测试方法来去执行。
相关推荐
在“北京圣思园 junit 全套笔记及源码”中,你将深入学习 JUnit 的各种功能和最佳实践。以下是一些关键知识点: 1. **安装与配置**:首先,你需要了解如何在你的开发环境中安装 JUnit,通常是通过 Maven 或 Gradle ...
### JUnit源码及其涉及的设计模式 #### 一、引言 JUnit作为一款广泛应用于Java项目的单元测试框架,其设计理念和实现方式对于软件开发者来说具有很高的学习价值。本文将深入探讨JUnit源码,并重点关注其中使用的...
自定义JUnit源码是一个对Java开发人员非常有帮助的主题,特别是对于那些想要深入理解测试框架工作原理或希望根据自身需求定制测试工具的开发者。JUnit是一个广泛使用的单元测试框架,它简化了编写和运行针对Java代码...
Junit jar包以及 Junit 源码包
junit 的源码jar包 junit 的源码jar包 junit 的源码jar包
JUnit4源码的完整版本包含了整个框架的实现细节,对于理解其工作原理、学习测试驱动开发(TDD)以及进行自定义扩展非常有帮助。 1. **JUnit核心概念**: - **Test Case**:在JUnit4中,测试用例是通过继承`org....
《Pragmatic Unit Testing in Java with JUnit》是一本专注于Java单元测试实践的书籍,其配套源代码提供了丰富的示例和实践案例,帮助读者深入理解如何有效地使用JUnit进行单元测试。JUnit是Java领域最广泛使用的...
JUnit4.8.1源码包 版本4.8.1 只有源码。
总的来说,分析《JUnit in Action》的源码,不仅可以帮助我们更好地掌握JUnit的使用,还能提升对测试驱动开发(TDD)和行为驱动开发(BDD)的理解,从而提高代码质量和项目维护性。对于任何Java开发者来说,这都是一...
【标题】"junit4 单元测试源码"涉及的是Java编程中单元测试的重要工具...通过分析和运行这些源码,学习者可以掌握单元测试的基本概念,了解如何编写有效的测试用例,以及如何利用Eclipse的集成环境进行测试驱动开发。
本篇文章将深入到JUnit的源码中,探讨Runner的实现原理,帮助开发者更好地理解和利用JUnit进行测试。 在JUnit中,Runner的主要职责是负责运行测试案例。默认的`BlockJUnit4ClassRunner`是JUnit4中的基础Runner,它...
### 圣思园Java课程知识点概览 #### Java基础与面向对象编程 - **Java简介**:Java是一种广泛使用的高级编程语言,具有平台无关性、安全性强等特点。 - **面向对象概念**:介绍面向对象的基本思想,包括对象、类、...
JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1] JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是...
《Junit Recipes 源码》是一份宝贵的资源,它包含了一系列与单元测试相关的实践案例,主要用于学习和应用JUnit测试框架。JUnit是Java编程语言中最常用的单元测试工具,它为开发者提供了一种简单且强大的方式来编写可...
本资源"Junit设计模式分析(带源码)"旨在深入探讨JUnit在设计上的模式和最佳实践,通过源码分析帮助开发者更好地理解和应用这个工具。 1. 单元测试基础: 单元测试是对软件中的最小可测试单元进行检查,如函数、...
源码分析: 1. **代码生成器**:在NetBeans中,开发者可以使用特定的模板或插件来自动生成JUnit测试类。这些测试类通常会包含针对源代码中的每个方法的测试用例。源码可能包括了用于解析Java源文件、识别方法以及...
4. `junit-4.11-sources.jar`、`junit-4.7-src.jar`:这些是源码文件,开发者可以查看JUnit的源代码,理解其内部工作原理,或者进行二次开发。 5. `使用说明.txt`:这个文件很可能包含了关于如何安装和使用这些...
通过分析和运行这些测试用例,我们可以了解如何编写有效的JUnit4测试,以及如何利用JUnit4提供的各种工具和特性来提高测试覆盖率和质量。 总之,理解和掌握JUnit4的源码对于Java开发者来说是至关重要的,它能帮助...