1、    说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,心理面感到真的是惭愧。原来的所有测试,我都是通过在控制台打印输出语句看结果,这样就可以根据自己打印的信息自己去判断,如果是少量的打印语句,还好办,但是如果是多数,那就不好办了,有些时候在测试好后,发布的程序中一般都不包括打印语句,这样就会把测试好的程序的打印测试语句去掉。所谓,人无完全,程序也没有绝对不出错的,只是看条件而已,而以后如果再次出错的时候,自己又会一行行的去读代码,找逻辑,再去写打印语句,然后再删除掉,这样,个人感觉,小项目里面还可以使用,这种多半就是一两个人做,就算改起来也会好办。但是如果是大项目,那么就惨了,开发人员换了一批又一批,每个人都不知道对方做了些什么,还有些什么没有做,慢慢的去读代码,或者是还不如自己去写,这样就浪费时间。因为也做个几个项目,所以对这个也算有了一定的了解,既然要想做一个优秀的JAVA程序员,那么JNuit现在应该是一个比较好的测试工具。

下面是JUnit一些特性的总结:

1)         提供的API可以让你写出测试结果明确的可重用单元测试用例
2)       提供了三种方式来显示你的测试结果,而且还可以扩展
3)       提供了单元测试用例成批运行的功能
4)       超轻量级而且使用简单,没有商业性的欺骗和无用的向导
5)       整个框架设计良好,易扩展

2、    我现在用的是JNUIT4,我把ASSERT包中的一些比较难于理解的方法,写在这里:

assertTrue

public static void assertTrue(java.lang.String message,                              boolean condition)

断言conditon为真,如果不是就抛出指定的异常错误message

Parameters:
message - 指定的或者是为空的断言错误
condition - 检测的条件

assertFalse

public static void assertFalse(java.lang.String message,                               boolean condition)
断言conditon为假,如果不是就抛出指定的异常错误message
Parameters:
message - 指定的或者是为空的断言错误
condition - 检测的条件

fail

public static void fail(java.lang.String message)

用指定的信息去使一个测试失败

Parameters:
message - 指定的或者是为空的断言错误
See Also:
AssertionError

assertEquals

public static void assertEquals(java.lang.String message,                                java.lang.Object expected,                                java.lang.Object actual)

断言两个对象相对,如果不等,就用指定的信息抛出一个断言错误。如果expected或者是actual为空,他们认为是相等的。 Parameters:message - 指定的或者是为空的断言错误expected - 期待的值actual - 实值的值

assertEquals

public static void assertEquals(java.lang.String message,                                double expected,                                double actual,                                double delta)

用一个正误差,去断言两个双精度数或者是单精度数相对。如果不等,用指定的message抛出异常。如果expeted的值无穷大,那么些是精度就会被忽略。NaNs被认为相等:assertEquals(Double.NaN, Double.NaN, *)通过。

 

Parameters:message - 指定的或者是为空的断言错误expected - 期待的值actual - 根据期待的值的实际值delta - 在精度之内的期待值与实际值,被认为是相等的

下面两个方法没有搞懂

assertThat

public static <T> void assertThat(T actual,                                  org.hamcrest.Matcher<T> matcher)

assertThat

public static <T> void assertThat(java.lang.String reason,                                  T actual,                                  org.hamcrest.Matcher<T> matcher)

3、 //Assert包里面所有的方法
package junit.framework;
public class Assert
{
 //
 // Constructors
 //
 protected Assert() { }
 //
 // Methods
 //
 public static void assertTrue(java.lang.String p1, boolean p2) { }
 public static void assertTrue(boolean p1) { }

public static void assertFalse(java.lang.String p1, boolean p2) { }
 public static void assertFalse(boolean p1) { }

public static void fail(java.lang.String p1) { }
 public static void fail() { }

public static void assertEquals(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
 public static void assertEquals(java.lang.Object p1, java.lang.Object p2) { }
 public static void assertEquals(java.lang.String p1, java.lang.String p2, java.lang.String p3) { }
 public static void assertEquals(java.lang.String p1, java.lang.String p2) { }
 public static void assertEquals(java.lang.String p1, double p2, double p3, double p4) { }
 public static void assertEquals(double p1, double p2, double p3) { }
 public static void assertEquals(java.lang.String p1, float p2, float p3, float p4) { }
 public static void assertEquals(float p1, float p2, float p3) { }
 public static void assertEquals(java.lang.String p1, long p2, long p3) { }
 public static void assertEquals(long p1, long p2) { }
 public static void assertEquals(java.lang.String p1, boolean p2, boolean p3) { }
 public static void assertEquals(boolean p1, boolean p2) { }
 public static void assertEquals(java.lang.String p1, byte p2, byte p3) { }
 public static void assertEquals(byte p1, byte p2) { }
 public static void assertEquals(java.lang.String p1, char p2, char p3) { }
 public static void assertEquals(char p1, char p2) { }
 public static void assertEquals(java.lang.String p1, short p2, short p3) { }
 public static void assertEquals(short p1, short p2) { }
 public static void assertEquals(java.lang.String p1, int p2, int p3) { }
 public static void assertEquals(int p1, int p2) { }

public static void assertNotNull(java.lang.Object p1) { }
 public static void assertNotNull(java.lang.String p1, java.lang.Object p2) { }
 public static void assertNull(java.lang.Object p1) { }
 public static void assertNull(java.lang.String p1, java.lang.Object p2) { }

public static void assertSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
 public static void assertSame(java.lang.Object p1, java.lang.Object p2) { }
 public static void assertNotSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
 public static void assertNotSame(java.lang.Object p1, java.lang.Object p2) { }

public static void failSame(java.lang.String p1) { }

public static void failNotSame(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }

public static void failNotEquals(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }

public static java.lang.String format(java.lang.String p1, java.lang.Object p2, java.lang.Object p3) { }
}

可以看得出来,还是assertEquals () 用得最多了,这个也可能用得最常用的了。

4、下面是一个简单的示例:

被测试类:Calculator

package junit.classes;
public class Calculator {
    public Calculator() {
    }
    public int add(int augend, int addend) {
        return augend + addend;
    }
    public int subtration(int minuend, int subtrahend) {
        return minuend - subtrahend;
    }
}

非正规的测试类:TestCalculator

package junit.test;
import junit.classes.Calculator;
import junit.framework.TestCase;
import org.junit.Test;
public class TestCalculator extends TestCase {
    Calculator calculator = new Calculator();
   
    //用Test注释表示要测试的的单元
    @Test
    public void testAdd() {
        int result = calculator.add(20, 50);
        assertEquals(result, 70);
    }

@Test
    public void testSubtration() {
        int result = calculator.subtration(50, 20);
        //这里不对,要抛出一个异常
        assertEquals("测试与结果不符",result, 20);
    }
    public static void main(String[] arg) {
        TestCalculator ts=new TestCalculator();
        ts.testAdd();
        ts.testSubtration();
    }
}

正规的测试方式:TestCalculator

package junit.test;
import junit.classes.Calculator;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
public class TestCalculator extends TestCase {
    Calculator calculator = new Calculator();
    public void testAdd() {
        int result = calculator.add(20, 50);
        assertEquals(result, 70);
    }
    public void testSubtration() {
        int result = calculator.subtration(50, 20);
        //这里不对,要抛出一个异常
        assertEquals("测试与结果不符",result, 20);
    }
    //这个静态方法就是要获得测试的是那个类,必须为静态的
    public static Test suite() {
        //返回测试单元
        //这里的测试单元就是当前类,当前类里面的所有函数
        return new TestSuite(TestCalculator.class);
    }
    public static void main(String[] arg) {
        //运行测试,任何JAVA程序要运行,都必须得有主函数
        TestRunner.run(suite());
    }   
}

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,今天就来学习一下相关推荐

  1. 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础...

    最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天 转载于:https://www.cnblogs.com/AceIsSunsh ...

  2. 写word文档时计算机的工作原理,写word文档时还没保存电脑就死机如何恢复

    电脑已经成为人类生活中不可缺少的一部分,人们利用电脑可以轻松的完成以前需要大量劳动力才能完成的工作,但在人们在使用电脑中也会遇到很多的麻烦,比如死机,这些原因烦恼着每一个电脑用户,这不,最近就有小伙伴 ...

  3. 当 ChatGPT 比你更会写代码,程序员还能干什么?

    作者 | 何苗 出品 | CSDN(ID:CSDNnews) 大模型的火热引爆了 AI 编程领域的全面革新,人们开始思考如何借助 AI 提高编程效率的同时,也在思考未来需要怎样的"新程序员& ...

  4. 我这些年从来没有用过算法,除了出去面试的时候

    点击上方蓝字设为星标 下面开始今天的学习- 来源:小浩算法 作者:小浩算法 排版整理:程序员吴师兄 本文 非常非常非常重要 ,是我很长一段时间的心血与积累,大家一定要耐心看完,共包含 3 节: 算法对 ...

  5. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!

    原标题:用python写一个聊天小程序!和女朋友的专属聊天工具! 1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可 ...

  6. java如何写单元测试_java如何使用JUnit进行单元测试

    注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...

  7. 你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3。

    你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3. NGINX最新版本,已提供对 QUIC 和 HTTP/3的支持,本文介绍一下如何安装与配置 很高兴能在一个特殊的开 ...

  8. 奉劝程序员们:写再多代码,还不如提升这两大能力有价值!

    哪个国家的程序员水平最高? 软件工程师水平测定平台HackRank发起了一系列编程挑战竞赛,给出了一份出乎意料的数据.据悉,这份数据研究分析了HackerRank社区里30万名开发者完成的140万项编 ...

  9. 用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

      视学算法分享   来源 | 机器之心 [导读]感觉用 Atari 游戏研究人工智能有点「不够接地气」?现在我们可以使用 Gameboy 模拟器了. 对于很多 80 后.90 后来说,任天堂 Gam ...

最新文章

  1. 完成个人中心—导航标签
  2. 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
  3. Python爬虫利器之Beautiful Soup的全世界最强用法 五百行文章!
  4. mysql root用户创建数据库,分配到一个帐户下
  5. 如何在SAP Cloud for Customer里开发具有依赖关系的互动下拉列表
  6. 第九大陆服务器未找到文件,第九大陆服务器优化规则说明 拍卖行和寄售功能关闭公告...
  7. 1909升级卡64_【春节配置推荐】第3期:设计娱乐万元配置推荐、四代升级建议参考...
  8. [转]-Sublime Text 3最好的功能、插件和设置
  9. postgresql 查询sql字符串拼接相关
  10. python机器人编程——VREP数字孪生四轴机械臂联合仿真
  11. 惠普传真服务器位置,惠普传真机的使用方法
  12. java 代码控制键盘_Java Robot实现控制鼠标和键盘的代码实例
  13. powerdesigner制作数据字典
  14. 数据改版 | CnOpenData中国行政区划数据
  15. python猜数字统计游戏次数_猜数字游戏的实现(Python3.5)
  16. Gentoo 2005.1 完整的USE参数清单中文详解
  17. excel统计每个单元格内的单词及空格的个数
  18. 全球与中国触摸屏IC市场现状及未来发展趋势
  19. C++作业 设计一个程序实现油桶面积与体积的计算(构造函数与析构函数)
  20. 一般哪个企业邮箱好用

热门文章

  1. 充分释放数据价值:安全、可信6到飞起
  2. 前端常用60余种工具方法(上)
  3. 补习系列(3)-springboot中的几种scope
  4. 设计模式的C语言应用-观察者模式-第四章
  5. mysql 错误编码_【分享】MySQl操作系统提示错误编码
  6. oracle .bdb,oracle 11g RAC crfclust.bdb过大的处理
  7. Linux搜狗输入法候选词乱码
  8. LeetCode-94. 二叉树的中序遍历
  9. 如何设置EditPlus保存时不生成bak文件
  10. Swiper学习之二---swiper的配置选项 ①