`

单元测试之道Java版(笔记)

阅读更多

一、各种断言

1、assertEquals([String message], expected, actual)//判断相等
assertEquals([String message], expected, actual, tolerance)//判断相等,tolerance指经度,比如0.01指小数点后两位

2、assertNull([String message], java.lang.Object object)
assertNotNull([String message], java.lang.Object object)

3、assertSame([String message], expected, actual)//判断是否为同一个对象
assertNotSame([String message], expected, actual)

4、assertTrue([String message], boolean condition)
assertFalse([String message], boolean condition)

5、fail([String message])//此断言使测试立即失败,通常用于标记某个不应该被到达的分支

二、JUnit框架
例子:
-----------------------------------------------
//被测试类TSP
package test;

public class TSP {

  public int shortestPath(int numCities) {
    // Ha!  Mock object!
    switch (numCities) {
    case 50: return 2300;
    case 5: return 140;
    case 10: return 586;
    }
    return 0;
  }

  public void loadCities(String name) {
  }

  public void releaseCities() {
  }

}
-----------------------------------------------

//测试类TestClass

package test;

import junit.framework.*;

public class TestClass extends TestCase {
  private static TSP tsp;
 
  public TestClass(String method) {
    super(method);
  }
 
  protected void setUp(){
   tsp = new TSP();
   System.out.println("per-test set up");
   tsp.loadCities("Beijing");
  }
 
  protected void tearDown(){
   System.out.println("per-test tear down");
   tsp.releaseCities();
  }
 
  // This one takes a few hours...
  public void testLongRunner() {
    assertEquals(2300, tsp.shortestPath(50)); // top 50
  }
 
  public void testShortTest() {
    assertEquals(140, tsp.shortestPath(5)); // top 5
  }
 
  public void testAnotherShortTest() {
    assertEquals(586, tsp.shortestPath(10)); // top 10
  }
 
  //有异常抛出时,会自动中止方法,并报错
  public void testException() throws Exception{
   throw new Exception() ;
  }
 
  //第一种,注释两个suite方法、setUp2、tearDown2
 
  //第二种,注释第二个suite方法
//  public static Test suite() {
//    TestSuite suite = new TestSuite();
//    suite.addTest(
//          new TestClass("testShortTest"));
//    suite.addTest(
//          new TestClass("testAnotherShortTest"));
//    return suite;
//  }
 
  //第三种,注释第一个suite方法
//  public static Test suite() {
//    TestSuite suite = new TestSuite();
//    suite.addTest(
//          new TestClass("testShortTest"));
//    suite.addTest(
//          new TestClass("testAnotherShortTest"));
//    suite.addTest(new TestClass("testException"));
//    TestSetup wrapper = new TestSetup(suite){
//     protected void setUp(){
//      setUp2();
//     }
//     protected void tearDown(){
//      tearDown2();
//     }
//    };
//    return wrapper;
//  }
 
//  private static void setUp2(){
//   tsp = new TSP();
//   System.out.println("per-test set up");
//   tsp.loadCities("Beijing");
//  }
// 
//  private static void tearDown2(){
//   System.out.println("per-test tear down");
//   tsp.releaseCities();
//  }
}


三、自定义JUnit断言

自定义的测试都应该继承自自定义的测试类,因为这样可以很容易的加入所有测试类都需要的方法。
eg:
import junit.framework.*;

public class MyTestCase extends TestCase {

  public void assertEvenDollars(String message, Money amount) {
    assertEquals(message, amount.asDouble() - (int)amount.asDouble(), 0.0, 0.001);
  }

  public void assertEvenDollars(Money amount) {
    assertEvenDollars("", amount);
  }
}

分享到:
评论

相关推荐

    读书笔记:junit junit5 jupiter 单元测试 java单元测试 测试驱动开发.zip

    读书笔记:junit junit5 jupiter 单元测试 java单元测试 测试驱动开发

    宋红康java笔记.rar

    14. **单元测试**:JUnit是Java中的单元测试框架,学习如何编写测试用例,进行断言和异常测试,确保代码质量。 以上是【宋红康java笔记】中可能涵盖的部分重要知识点,每个主题都值得深入研究和实践。通过学习这些...

    java笔记.zip

    尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 ...2020-4-27 单元测试

    java学习笔记模版

    - 在功能完成后,进行上线前的测试是非常重要的,包括单元测试、集成测试和性能测试,以确保功能的稳定性和正确性。 在学习过程中,实习生应持续巩固Java基础,如字符串处理、异常处理等,同时加强业务理解,熟悉...

    java云笔记代码与文档

    10. **单元测试与集成测试**:JUnit和其他测试框架可能被用来编写单元测试,验证代码的正确性;而Selenium等工具可能用于进行集成测试,确保各组件间的协作无误。 通过阅读项目文档和分析源码,开发者可以深入理解...

    Java学习笔记(源码)

    11. **单元测试与调试**:学习如何使用JUnit进行单元测试,以及使用调试工具如JDB或IDE内置的调试器来定位和修复程序错误。 12. **设计模式**:笔记可能涵盖了常见的设计模式,如单例、工厂、观察者、装饰器、...

    狂神说JAVA的所有笔记.zip

    最后,笔记还可能包含了实际项目开发中的经验分享,如MVC框架Spring的使用、数据库操作、Web开发、单元测试等。这些实战经验能让读者了解如何将理论知识应用到实际项目中,提升解决实际问题的能力。 总而言之,...

    java全套培训笔记

    笔记可能包含JUnit的使用,它是Java的单元测试框架,以及如何使用IDE(如Eclipse、IntelliJ IDEA)进行调试和性能优化。 最后,笔记可能还会介绍如何进行有效的代码管理和版本控制,如Git的使用,以及持续集成/持续...

    java笔记本功能实现

    - 通过单元测试确保每个功能的正确性,可以使用JUnit等测试框架。同时,集成测试确保不同组件之间的协同工作。 综上所述,实现这样一个Java笔记本应用需要扎实的Java基础,熟练掌握GUI编程,以及对文件I/O和事件...

    黑马java教程知识点笔记整理

    JUnit是Java的单元测试框架,用于编写和执行测试用例。调试工具如JDB和IDE的内置调试器帮助开发者定位和修复程序中的问题。 以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和...

    JAVA上课笔记class_18

    在Java开发过程中,单元测试是确保代码质量的重要手段之一。这部分内容强调了进行单元测试时的基本流程和注意事项: 1. **设置测试环境**:每次编写一个新的测试用例集(`TestCases`)时,应该首先调用`setUp`方法...

    林信良java学习笔记

    此外,笔记可能还涉及了Java库的使用,比如Apache Commons、Spring框架等,以及如何利用JUnit进行单元测试,以确保代码的质量和可靠性。对于数据库操作,可能会讲解JDBC的使用,甚至涉及ORM框架如Hibernate或MyBatis...

    良葛格JAVA 学习笔记

    13. **单元测试与调试**:讲解JUnit和Mockito等工具的使用,以及如何进行有效的代码调试。 14. **Maven与Gradle**:介绍项目构建工具Maven和Gradle的使用,以及它们如何管理项目依赖和构建过程。 15. **持续集成与...

    Java JDK 6学习笔记——ppt简体版

    此外,学习笔记可能还会涉及一些实际开发中的最佳实践,如代码风格、注释规范、单元测试以及如何利用JDK自带的工具进行项目管理和调试。 总的来说,Java JDK 6学习笔记对于初学者而言是一份非常实用的学习资源,它...

    java黑马笔记.rar

    如Eclipse、IntelliJ IDEA等集成开发环境,Maven或Gradle构建工具,以及JUnit单元测试框架等。 14. **Java新特性**: 随着版本更新,Java引入了诸多新特性,如lambda表达式(Java 8)、模块化系统(Java 9)、...

    java笔记本

    12. **软件工程实践**:遵循良好的编码规范,编写单元测试,使用Maven或Gradle进行项目构建,以及使用IDE如IntelliJ IDEA或Eclipse进行开发。 这款Java笔记本应用展示了Java在创建功能丰富的桌面应用程序方面的强大...

    Junit4单元测试个人笔记

    《Junit4单元测试个人笔记》 单元测试是软件开发过程中的重要环节,它能确保代码的正确性和稳定性。本文主要介绍了使用Junit4进行单元测试的一些规范和Eclipse中的应用。 首先,遵循一定的测试规范至关重要。测试...

    spring3学习笔记(2)-集成ibatis3进行单元测试

    在本篇“Spring3学习笔记(2)-集成ibatis3进行单元测试”中,我们将深入探讨如何在Spring3框架中整合Ibatis3,并利用它来进行单元测试。这个主题对于理解如何在实际项目中实现数据访问层的测试具有重要意义。在现代...

    Java全程笔记,包括前后端笔记

    12. **单元测试与调试**:JUnit是Java常用的单元测试框架,学习如何编写测试用例以验证代码的正确性。同时,理解如何使用IDE的调试工具来定位和修复问题。 13. **项目实战**:笔记可能包含一个或多个实际项目,通过...

    java云笔记

    10. **测试框架**:JUnit、Mockito等测试工具用于编写单元测试和集成测试,确保代码质量和功能的稳定性。 通过以上技术的综合运用,Java云笔记实现了高效、可靠的笔记存储和同步,为用户提供了无缝的跨设备体验。...

Global site tag (gtag.js) - Google Analytics