java怎么测试_java中如何使用Junit测试[通俗易懂]

java怎么测试_java中如何使用Junit测试[通俗易懂]java中如何使用Junit测试一、总结一句话总结:a、单元测试的测试代码在test文件夹下,和源码不在同一个文件夹下b、测试的类方法都以test开头,后面接要测试的类或者方法的名字1、JUnit中什么时候使用assertTrue,assertFalse语句?true通过false通过assertTrue(booleancondition);condition:如果condition结果为t…

大家好,又见面了,我是你们的朋友全栈君。

java中如何使用Junit测试

一、总结

一句话总结:a、单元测试的测试代码在test文件夹下,和源码不在同一个文件夹下

b、测试的类方法都以test开头,后面接要测试的类或者方法的名字

1、JUnit中什么时候使用assertTrue,assertFalse语句?

true 通过

false 通过

assertTrue(boolean condition);

condition:如果condition结果为true,则通过测试.

assertFalse(boolean condition);

condition:如果condition结果为false,则通过测试.

2、单元测试是什么?

最小 功能模块 进行测试

百度百科的解释是这样的:单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。

简单的说,单元测试就是对你程序中最小的功能模块进行测试,在c语言里可能是一个函数,java中可能是一个方法或者类。

目的就是为了提高代码的质量。

二、java使用Junit测试实例

参考:

java如何使用JUnit进行单元测试 – Fench – 博客园

http://www.cnblogs.com/fench/p/5936008.html

单元测试是什么?

百度百科的解释是这样的:单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。

简单的说,单元测试就是对你程序中最小的功能模块进行测试,在c语言里可能是一个函数,java中可能是一个方法或者类。

目的就是为了提高代码的质量。

junit是什么?

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

也就是说junit就是别人写好的单元测试框架,使用此框架你可以大大缩短你的测试时间和准确度(笔者现在还记得大一刚来的的时候,c语言写的小程序,每次都是重启测试,那种编译-输入–停止-编译的苦日子,很痛苦,今天用junit这个单元测试框架好多了)。

注:eclipse已经自带JUnit, JUnit的当前常用版本分为3.X(需要手动添加),4.X(支持注解)

我的这个版本的eclipse自带JUnit3.X的,本文以JUnit3.x为例进行测试。

下面以 “求最大子数组之和”的例子,简单的介绍一下单元测试是什么,junit如何入门。

1 packageedu.sau.maximun;2

3 public classSubArray {4 //求两个数中的最大

5 public int max(int x, inty){6 if(x>y)7 returnx;8 else

9 returny;10 }11

12 //最大子数组之和

13 public int maxSubArr(int[] arr){14 int sum = arr[0]; //最大值子数组和

15 int sub_sum = arr[0];//中间值

16

17 for(int i = 1; i

以上代码实现了“最大子数组之和”的算法,共有max和maxSubArr两个方法,下面开始测试(重新创建一个新包,取名 test,所有测试都是再这个新包完成)

1 packageedu.sau.maximun.test;2

3 importedu.sau.maximun.SubArray;4 importjunit.framework.TestCase;5

6 public class TestMaximun extendsTestCase {7

8 //对方法max进行测试

9 public voidtestMax(){10 int x = 1; //测试数据

11 int y = 2;12 int z = -1;13 SubArray sub = newSubArray();14 int result1 =sub.max(x, y);15 int result2 =sub.max(y,x);16 int result3 =sub.max(z, x);17 assertTrue(result1 ==y);18 assertTrue(result2 ==y);19 assertTrue(result3 == 1);20 }21

22 //对方法maxSubArr测试

23 public voidtestMaxSubArr(){24

25 int arr1[] ={1,2,3,-1}; //测试用例

26 int arr2[] = {1,2,-4,8,4,-4,6,-2,1};27 int arr3[] ={-4,-2,-1,-3};28 int arr4[] = {-4,2,-4,2,-1};29 SubArray sub = newSubArray();30

31

32 assertTrue(sub.maxSubArr(arr1) == 6);33 assertTrue(sub.maxSubArr(arr2) == 14);34 assertTrue(sub.maxSubArr(arr3) == -1);35 assertTrue(sub.maxSubArr(arr4) == 2);36 }37 }

整个文件的结构目录如下:

450e3e3f07b755db249e0712dfb4d433.png

程序单元测试的方法:-右击 测试类->Run as ->JUnit test

运行结果:(Errors:0,Failure:0 说明测试通过,如果出错,Failure是单元测试所期望的错误,说明你的代码结果不满足你的要求,Errors需要你查看系统的配置,检查代码。是不是手动输入快好多?)

f4e76abe9494e4c2a2bf647db8e836e8.png

说明:

8f7573e6168baec811d147b689a1b5fd.png

总结:测试类需要继承junit.framework.TestCase类,测试方法命名需要按照public void TestXXXX格式,通过断言来判断结果的正确行。

测试范围一定要满足你的所有需求

以测试testMaxSubArr为例,具体的测试样例及目的如下:

用例编号

用例描述

输入数据

预期输出数据

通过/不通过

评价

1

检测能否实现最大数组求和的基本功能(一般情况)

1,2,3,-1

6

通过

程序实现基本功能

2

最大子数组处于数组中间(一般情况)

1,2,-4,8,4,-4,6,-2,1

14

通过

程序实现基本功能

3

数组元素均为负数,且第一个元素为最小(特殊情况)

-4,-2,-1,-3

-1

通过

程序实现特殊情况的求和

4

数组中存在最大值相同的多个(>=2)子数组(特殊情况)

-4,2,-4,2,-1

2

通过

程序能对多个相同子数组进行保留

现在大家已经会基本的单元测试,当然这只是非常简单的使用junit,后期我会写一些关于junit的更具体的介绍。

代码下载地址: https://coding.net/u/fench/p/java-junit/git

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157085.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看g++/gcc版本

    查看g++/gcc版本windows查看gcc/g++版本cmd命令行gcc–versiong++–version

    2022年6月26日
    181
  • RabbitMQ脑裂「建议收藏」

    RabbitMQ脑裂「建议收藏」在RabbitMQ3.4.x中会出现错误的网络分区检测(某种意义上可以称之为脑裂)的现象,本文通过实验验证此现象,愿小伙伴们少走弯路。Preview网上有两篇帖子(需要翻墙)https://groups.google.com/forum/#!topic/rabbitmq-users/dt8VFhMb2zMhttps://groups.google.com/forum/#!top…

    2025年7月8日
    0
  • java常量池和字符串常量池_常量池中的字符串是对象吗

    java常量池和字符串常量池_常量池中的字符串是对象吗 原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool/                 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着…

    2022年7月28日
    9
  • acwing-最长上升公共子序列(动态规划)[通俗易懂]

    acwing-最长上升公共子序列(动态规划)[通俗易懂]原题连接熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了。小沐沐说,对于两个数列 A 和 B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列,而所有的公共上升子序列中最长的就是最长公共上升子序列了。奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子序列。不过,只要告诉奶牛它的长度就可以了。数列 A 和 B 的长度均不超过 3000。输入格式

    2022年8月8日
    8
  • 学习Java编程入门书籍

    学习Java编程入门书籍分享几本java编程入门书籍,文章转自知乎路人甲《HeadFirstJava》《HeadFirstJava》被亚马逊评为十大好书之一。在京东计算机类书籍中热度排名第16位,在Java类书籍中排名第2位。豆瓣评分为8.8分,有百分之54.4%的读者给出了五星评价。在知乎社区中有来自无数位的大神做推荐。哪本书适合推荐给Java初学者?-书籍推荐《HeadFirstJava》…

    2022年6月14日
    35
  • MySQL(笔记)

    MySQL(笔记)数据库总览有时候查的数据错乱,可以重启MySQL关系型数据库(SQL)MySQL,Oracle,SQLServer,SQLite,DB2,…关系型数据库通过外键关联来建立表与表之间的关系非关系型数据库(NOSQL)notonlyRedis,MongoDB,…非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定DBMS数据库管理系统(DataBaseManagementSystem)数

    2022年5月19日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号