这两天花了点时间把junit的源码看了看,把看后的想法总结在这里,说实在的junit的内容真很少,但是确有这么大的影响里,呵呵,只能说它
做的对了。
因为我比较懒,而且对swing的东西不是太熟悉,所以我只看了junit.framework.*,junit.runner.*,junit.extensions.*,junit.textui.*,我想
这样也就差不多了。
我先大体的说说,首先你生成一个runner,这个runner调用run方法,run的参数是个suite对象,run方法最终会调用suite的run方法,run方法会将调用
信息写到TestResult中(Colleting Parameter),最后使用TestListener将TestResult中的信息打印出来,觉得过程还是很简单的。
然后说说一个重要的部分就是Test,TestCase,TestSuite的关系,首先TestCase和TestSuite都实现了Test接口,这个接口中最重要的方法当然是
run,他们构成了composite模式 ,TestCase是leaf,而TestSuite就是composite,当你调用suite的run方法时他会迭代内部所有的Test(放在一个Vector中)调用相应的run方法
,而如果这个Test是一个TestCase类型的它就调用起相应名称的一个test**方法,而如果这个Test是一个TestSuite对象将对调用TestSuite的run方法
进而继续迭代调用其内部的Test,还有一点要说明的当你实现了一个TestCase对象,它只代表一个test**方法,就是构造函数传来的name参数对应的
方法,虽然你的所有测试方法都写在一个TestCase的子类中,但是一个对象只对应一个test**方法.
接着我要说的就是assert,我们知道test**方法中就是一些asert**方法,可以说测试方法的单元就是这些断言,看过源码后会觉得它的实现相当的简单
就是测试是否满足一定的条件,如果不满足则抛出AssertionFailedError,不知道为什么老大要用Error也许是这样写程序方便,不用随时捕获它吧
如果抛出异常则会封装成TestFailure存到TestResult中(而且也要存到TestListener中).
junit.runner.*是测试用例运行时需要的环境,这里包括最重要的BaseTestRunner,几个自定义的ClassLoader,几个TestCollector,一个快速排序的助手类
还有一些无关紧要的东西。
junit.extensions.*中时一些对TestSuite的扩展类它们为某些需求提供了快速实现。
junit的实现很简单就是用了些反射,同步,还有一些面向对象的技巧,但是它提供了一个runner,为测试代码创建了一个运行环境,这个倒是
个不错的想法,好像sun对容器的使用是很常规的思想,总之要比在manin函数中粗糙的测试要好的多,但我觉得也没有必要神话它吧,起码我觉得
可以作出比他更好的东西,不过简单也的确是它快速推广的原因。
package lq.mytest.test;
import junit.framework.*;
public class KkTest extends TestCase{
public KkTest(); {}
public KkTest(String name); {
super(name);;
}
public void setUp(); {
}
public void teatDown(); {
}
public void testA(); {
assertEquals(1, 1);;
}
public void testB(); {
assertTrue(true);;
}
public static TestSuite suite(); {
//将KkTest类中的所有test方法加到suite中
//TestSuite suite = new TestSuite(KkTest.class);;
TestSuite suite = new TestSuite();;
//使用内省调用testA();
suite.addTest(new KkTest("testA"););;
//使用匿名内部类,重写了runTest方法,直接调用testB方法,而
//不用内省,这样是一种提高效率的方法
suite.addTest(new KkTest("testB"); {
public void runTest(); {
testB();;
}
});;
return suite;
}
public static void main(String[] args); {
//测试全部
//junit.textui.TestRunner.run(KkTest.class);;
junit.textui.TestRunner.run(suite(););;
}
}
分享到:
相关推荐
总结来说,JUnit4 是对 JUnit3 的一个重要升级,它利用 Java 5 的注解特性极大地简化了测试用例的编写,提高了测试代码的可读性和可维护性。通过使用注解,开发者能够更自由地组织测试逻辑,同时也能够方便地扩展...
### 单元测试工具Junit的简单使用 #### 一、引言 随着软件开发规模的不断扩大和技术的日益复杂化,软件质量成为了决定项目成败的关键因素之一。单元测试作为提高软件质量的重要手段,在软件开发过程中扮演着至关...
JUnit 3.8是JUnit的一个早期版本,它的API设计相对简单,主要包含以下关键组件: 1. **测试类和测试方法**:在JUnit 3中,测试类通常继承自`junit.framework.TestCase`。测试方法以`test`开头,例如`public void ...
JUnit提供了一套简单的API,开发者可以创建断言来检验代码的预期结果,设置和清理测试环境,以及使用注解(annotations)来定义测试行为。 以下是JUnit的一些核心概念和功能: 1. **测试类和测试方法**:测试类...
总结来说,JUnit3.8.1是一个用于Java单元测试的框架,通过创建测试类和方法,利用断言验证代码行为,确保代码质量。虽然现在有更新的版本,但理解其基本原理对于学习单元测试至关重要。通过提供的代码示例,我们可以...
总结,JUnit作为Java开发中的必备工具,其强大的功能和易用性使得测试工作变得简单高效。深入学习和掌握JUnit,不仅可以提升代码质量,也能促进团队协作和项目的可持续发展。通过阅读官方文档、实践案例以及源码分析...
Junit作为Java领域最常用的单元测试框架,为开发者提供了简单易用的API来进行测试。本案例涵盖了Spring和Struts两大框架的单元测试,旨在帮助开发者掌握如何对这两个流行的Java Web框架进行有效的测试。 一、Junit...
**Junit使用说明文档** ...总结,Junit是Java开发者必备的单元测试工具,熟练掌握其使用能够显著提升代码质量和开发效率。通过阅读提供的"Junit使用说明"文档,配合源代码和截图,将更直观地理解并运用到实际项目中。
在JUnit 4中,创建一个简单的测试只需要几步。首先,定义一个包含待测试代码的类,然后用@Test注解标记测试方法。测试方法通常会调用被测试类的函数并使用断言方法来验证结果。在上面的例子中,我们测试了两个整数...
总结来说,Junit-4.13.2作为Java单元测试的首选工具,它的功能强大且易于使用。无论是IDEA还是Eclipse,都提供了丰富的支持,让测试工作更加高效。通过熟练掌握Junit,开发者可以编写出更健壮、更可维护的代码,提升...
总结来说,"Junit计算器测试"是一个很好的实践项目,它可以帮助初学者理解Junit的基本用法,包括创建测试类、编写测试方法、使用断言以及理解测试生命周期。通过这样的练习,开发者可以逐步掌握单元测试的精髓,提高...
总结起来,虽然无法直接访问JUnit官网,但我们仍可以通过多种方式获取和使用JUnit 4.12所需的jar包,进行有效的单元测试。同时,了解如何在不同环境下配置这些依赖,对于Java开发工作至关重要。
本文将详细介绍如何集成 JUnit 和 Selenium,包括环境配置以及实现一个简单的示例。 #### 二、环境配置 在开始集成 JUnit 和 Selenium 之前,首先需要确保所有必要的环境都已正确配置好。 ##### 1. 设置环境变量 -...
下面是一个简单的AndroidJUnit5测试用例示例,测试一个计算加法的函数: ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class ...
总结,Junit4使得Java的单元测试变得简单而直观。通过注解,我们可以快速定义测试方法,结合断言库进行结果验证,确保代码质量。在本例中,我们学会了如何为Calculate类的加减乘除方法编写有效的单元测试,为后续的...
总结来说,这个“junit单元测试示例”涵盖了以下关键点: 1. 添加JUnit库到构建路径 2. 创建被测试的实体类 3. 编写测试类和测试方法 4. 使用注解标识测试方法 5. 执行单元测试 通过这种方式,开发者可以确保代码的...
Junit作为一个轻量级的库,提供了丰富的断言方法和注解,使得创建和运行这些测试变得简单而直观。 Junit 4.13版本是我们在这里讨论的重点,这是Junit的一个稳定版本,包含了众多改进和修复。其中,`junit-4.13.jar`...
### Eclipse中JUnit的配置详解 #### 一、引言 JUnit是Java开发环境中非常重要的单元...这种配置方式不仅简单易行,而且确保了测试的顺利进行。在实际开发过程中,合理运用单元测试可以显著提高代码质量和开发效率。
《JUnit 4.10详解:...总结,JUnit 4.10版本是JUnit发展史上的一个重要里程碑,它的改进极大地提升了测试的效率和质量。通过深入理解和熟练运用其新特性,开发者可以更好地进行单元测试,确保代码的稳定性和可靠性。