`

junit基础知识

阅读更多
一、包含必要地Package

  在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。最主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分功能就有了。还有一句话也非常地重要“import static org.junit.Assert.*;”,我们在测试的时候使用的一系列assertEquals方法就来自这个包。大家注意一下,这是一个静态包含(static),是JDK5中新增添的一个功能。也就是说,assertEquals是Assert类中的一系列的静态方法,一般的使用方式是 Assert. assertEquals(),但是使用了静态包含后,前面的类名就可以省略了,使用起来更加的方便。

  二、测试类的声明

  大家注意到,我们的测试类是一个独立的类,没有任何父类。测试类的名字也可以任意命名,没有任何局限性。所以我们不能通过类的声明来判断它是不是一个测试类,它与普通类的区别在于它内部的方法的声明,我们接着会讲到。

  三、创建一个待测试的对象

  你要测试哪个类,那么你首先就要创建一个该类的对象。正如上一篇文章中的代码:

  private static Calculator calculator =newCalculator();

  为了测试Calculator类,我们必须创建一个calculator对象。

  四、测试方法的声明

  在测试类中,并不是每一个方法都是用于测试的,你必须使用“标注”来明确表明哪些是测试方法。“标注”也是JDK5的一个新特性,用在此处非常恰当。我们可以看到,在某些方法的前有@Before、@Test、@Ignore等字样,这些就是标注,以一个“@”作为开头。这些标注都是JUnit4自定义的,熟练掌握这些标注的含义非常重要。

  五、编写一个简单的测试方法

  首先,你要在方法的前面使用@Test标注,以表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为 void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了。比如:

  
@Test

  public voidtestAdd() ...{

  calculator.add(2);

  calculator.add(3);

  assertEquals(5, calculator.getResult());

  }

 
我们想测试一下“加法”功能时候正确,就在测试方法中调用几次add函数,初始值为0,先加2,再加3,我们期待的结果应该是5。如果最终实际结果也是 5,则说明add方法是正确的,反之说明它是错的。assertEquals(5, calculator.getResult());就是来判断期待结果和实际结果是否相等,第一个参数填写期待结果,第二个参数填写实际结果,也就是通过计算得到的结果。这样写好之后,JUnit会自动进行测试并把测试结果反馈给用户。

  六、 忽略测试某些尚未完成的方法

  如果你在写程序前做了很好的规划,那么哪些方法是什么功能都应该实现定下来。因此,即使该方法尚未完成,他的具体功能也是确定的,这也就意味着你可以为他编写测试用例。但是,如果你已经把该方法的测试用例写完,但该方法尚未完成,那么测试的时候一定是“失败”。这种失败和真正的失败是有区别的,因此JUnit 提供了一种方法来区别他们,那就是在这种测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

  七、 Fixture(暂且翻译为“固定代码段”)

  Fixture 的含义就是“在某些阶段必然被调用的代码”。比如我们上面的测试,由于只声明了一个Calculator对象,他的初始值是0,但是测试完加法操作后,他的值就不是0了;接下来测试减法操作,就必然要考虑上次加法操作的结果。这绝对是一个很糟糕的设计!我们非常希望每一个测试都是独立的,相互之间没有任何耦合度。因此,我们就很有必要在执行每一个测试之前,对Calculator对象进行一个“复原”操作,以消除其他测试造成的影响。因此,“在任何一个测试执行之前必须执行的代码”就是一个Fixture,我们用@Before来标注它,如前面例子所示:

  @Before

  public void setUp() throws Exception ...{

  calculator.clear();

  }


  这里不在需要@Test标注,因为这不是一个test,而是一个Fixture。同理,如果“在任何测试执行之后需要进行的收尾工作”也是一个Fixture,使用@After来标注。由于本例比较简单,没有用到此功能。

http://tech.sina.com.cn/s/2010-01-18/14081218926.shtml
分享到:
评论

相关推荐

    Junit学习.rar

    1. **JUnit基础知识**:了解JUnit的基本概念,如测试套件(Test Suite)、测试方法(Test Method)以及断言(Assertion)。这些都是编写测试用例的基础。 2. **JUnit注解(Annotations)**:从JUnit 3.8过渡到4.x,...

    Junit深入理解和学习的必备资料

    1. **JUnit基础知识**:JUnit是一个基于Java的开源测试框架,它提供了注解(Annotations)来定义测试方法和测试类,如@Test用于标记测试方法,@Before和@After用于设置测试前后的环境。JUnit的核心理念是使得编写和...

    Junit+Recipes中文版.rar

    1. **JUnit基础知识**:首先,书中会介绍JUnit的基本概念,包括如何创建和运行测试用例,理解断言(assertions)以及测试失败的处理。这包括设置测试环境,引入JUnit库,并创建首个简单的测试类。 2. **测试注解...

    SpringBoot-Junit

    2. **JUnit基础知识**:了解JUnit的基本概念,如`@Test`注解表示测试方法,`@Before`和`@After`注解分别用于在每个测试方法之前和之后执行的代码。JUnit5引入的新特性,如`@DisplayName`用于设置测试方法的显示名称...

    单元测试之道Java版-使用JUnit

    1. **JUnit基础知识**:包括JUnit框架的安装与配置,如何创建和运行测试用例,以及如何理解和解读测试结果。 2. **断言与异常处理**:学习如何使用JUnit提供的各种断言方法(如assertEquals、assertTrue等)来验证...

    Mastering Unit Testing Using Mockito and JUnit

    - **JUnit基础知识**:介绍JUnit的基本概念、安装配置以及简单的测试案例。 - **Mockito入门**:讲解Mockito的核心概念和基本使用方法。 - **JUnit与Mockito的集成**:演示如何将JUnit和Mockito结合起来进行单元测试...

    Junit的简单说明

    ### JUnit基础知识详解 #### 一、JUnit简介与框架特性 JUnit是一款开源的Java测试框架,主要用于编写可重复执行的单元测试。它为开发者提供了一种便捷的方式来验证代码的正确性,确保软件质量的同时提高开发效率。...

    JUnit Recipes

    #### 二、JUnit基础知识 **1.1 单元测试概述** 单元测试是一种软件测试方法,它关注于软件中的最小可测试单元(如函数或方法)进行验证。单元测试能够帮助开发者在编码阶段就发现并修复问题,从而减少后期集成和...

    jUnit测试框架入门详解(加强版)

    jUnit 基础知识小结包括:一个 TestCase 一般包含有一组相关的测试方法;使用断言测试结果(注意浮点数 assertEquals 要指定 delta,即精度);每个测试方法必须完全独立;测试代码必须非常简单;不能为测试代码再...

    自己整理搜集的一些junit资料 保你满意

    1. **JUnit基础知识**: - **测试用例(Test Case)**:JUnit测试的核心是测试用例,它通常由一个或多个测试方法组成,每个方法测试代码的一个特定方面。 - **断言(Assertion)**:断言是测试的核心部分,用来...

    Manning - JUnit.Recipes.2005

    #### 知识点一:JUnit基础知识与核心概念 - **JUnit介绍**:JUnit是一种广泛应用于Java开发环境中的单元测试框架,它支持开发者编写自动化测试用例来验证软件组件的行为是否符合预期。本书《JUnit Recipes》由J.B. ...

    JUnit4基础文档

    本文档介绍了JUnit4的基础知识,包括单元测试的概念、JUnit4的HelloWorld示例、断言机制、注解使用、测试运行方式等。 单元测试的概念 单元测试是指对软件的最小单元进行测试,以确保其正确性和可靠性。单元测试...

    Manning.JUnit.in.Action.2nd.Edition.Jun.2010.MEAP.rar

    1. **JUnit基础知识**:包括如何安装和配置JUnit,以及如何编写基本的测试用例。这些用例通常包含断言(assertions),用于验证代码的行为是否符合预期。 2. **测试驱动开发(TDD)**:JUnit是TDD的重要组成部分。...

    Manning.JUnit.Recipes.Practical.Methods.for.Programmer.Testing

    1. **JUnit基础知识**:了解JUnit的基本结构,包括测试类、测试方法、注解(如@Test、@Before、@After)以及断言(如assertEquals、assertTrue等)的使用。 2. **测试驱动开发(TDD)**:TDD是一种编程范式,强调先...

    pragmatic unit testing in java with junit

    1. **JUnit基础知识**:理解JUnit框架的基本概念,包括@Test注解、断言、异常测试以及如何创建和运行测试用例。 2. **测试驱动开发(TDD)**:TDD是一种软件开发方法论,提倡先编写测试,再编写满足测试的代码。本书...

    JUnit学习资料大全第二部分(共2部分)

    1. **JUnit基础知识**:了解JUnit的核心概念,如测试类、测试方法、注解(@Test、@Before、@After、@BeforeClass、@AfterClass)以及断言(assertTrue、assertFalse、assertNull等)。这些都是编写单元测试的基础。 ...

    Junit4.4 Junit3.8.1

    JUnit 3是JUnit的一个早期版本,它奠定了现代单元测试框架的基础。在3.8.1这个版本中,主要特点包括: 1. **测试注解**:虽然注解功能在后续版本中得到强化,但在3.8.1中,`@Test`注解用于标记测试方法,但不支持...

Global site tag (gtag.js) - Google Analytics