前言

  在日常的开发中,离不开单元测试,而且在学习Java时,特别是在测试不同API使用时要不停的写main方法,显得很繁琐,所以这里介绍使用Junit学习Java的方法。此外,我使用log4j将结果输出(在项目中不这么用,这里仅是使用)。为了方便大伙了解,我简单总结了一下简单测试代码并传到GitHub上了,后续我也会持续更新的,欢迎大伙批评指正。

1. Junit简介和使用

1.1 Junit简介

  1.1.1 Junit相关标识

  @BeforeClass会在所有方法调用之前执行,该方法是静态的,当测试类被加载后后接着运行它,比较适合加载配置文件。

  @AfterClass标注的方法也是静态,在所有方法之后执行,适合对资源的清理,比如释放数据库的释放。

  @Before和@After在每个测试方法前后都被执行一遍。

  @Test将方法标识为测试方法。在使用时也有如下几种用法:

  1. @Test(timeout=N),在执行类似死循环的情景下,可以设置结束时间。
  2. @Test(except=…) 可以接收测试方法中的异常,让测试不报错。

  1.1.2 Junit测试套件

  为方便组织多个测试类一起运行,可以使用测试套件,步骤如下:

  1. 写一个不含其它方法的类作为测试套件的入口类;
  2. 更改测试运行器Suite.class;
  3. 将要测试的类作为参数传入SuiteClasses({});

  1.1.3 Junit参数化设置

  在代码结构、方法等相同,仅参数和预期值不同的情况下,可以使用Junit中的参数化设置。

  1. 将测试运行器改为Parameterized.class;
  2. 声明变量来保存参数和预期值;
  3. 要有个public的构造函数;
  4. 返回值为公共的static的Collection方法,并使用@Parameters进行修饰;

  此外,在类中使用@Test标识要测试的方法。

 1.2 Junit的maven依赖

  为了使用Junit测试框架,只需在maven项目的pom文件中加入依赖即可,这里也加入了log4j的pom文件配置,期中版本的选择可以根据实际情况设置,如下:

        <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2.  测试示例

  在实际的类、方法的命名上,格式建议为test+类名/方法名,这样有助于理解,当然这不是必须的。

import org.apache.log4j.Logger;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals; public class TestMap {
private static final Logger logger=Logger.getLogger(TestMap.class); @Test
public void testPut(){
Map<String ,Integer> map=new HashMap<>();
map.put("apple",123);
map.put("banana",2345);
logger.info(map.get("apple"));
logger.info(map.put("apple",567));
logger.info(map.get("apple"));
logger.info(map.put("water",1000));
}
@Test
public void testTraverse(){
Map<String,Integer> map=new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
assertEquals(map.get("c"),new Integer(3)); for(String key:map.keySet()){
System.out.println(map.get(key));
} for(Map.Entry<String,Integer> entry:map.entrySet()){
System.out.println(entry.getKey()+"="+entry.getValue()); }
}
}

  非常欢迎大伙留言分享自己的经历!

使用Junit测试框架学习Java的更多相关文章

  1. Java Junit测试框架

    Java    Junit测试框架 1.相关概念 Ø JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要 ...

  2. Java高级特性 第10节 IDEA和Eclipse整合JUnit测试框架

    一.IDEA整合Junit测试框架 1.安装插件 打开File菜单的下拉菜单settings[设置] : 点击左侧Plugins[插件]菜单 在输入框中输入JUnitGenerator 2.0,点击I ...

  3. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  4. Junit测试框架 Tips

    关于Junit测试框架使用的几点总结: 1.Junit中的测试注解: @Test →每个测试方法前都需要添加该注解,这样才能使你的测试方法交给Junit去执行. @Before →在每个测试方法执行前 ...

  5. Android Junit测试框架

    对应用进行单元测试: 使用Junit测试框架,是正规Android开发的必用技术.在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 1.配置指令集和函数库: (1)配置指令集,指定 ...

  6. JUnit - 测试框架

    什么是 Junit 测试框架? JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量.JUnit 测试框架能够轻松完成以下任意两种结合: Ecli ...

  7. karma + phantom + mocha + sion + chai + nightwatch + selenium2(webdriver) 测试框架学习

    第三方的教程传送门 https://segmentfault.com/a/1190000004558796 karma # github https://github.com/karma-runner ...

  8. Android开源测试框架学习

    近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...

  9. EditBox问题的实现以及Junit测试框架的简要说明

    一.这周的EditBox由一个框改为三个框,同时进行测试,下面给出程序及截图 1 import java.util.regex.Matcher; 2 import java.util.regex.Pa ...

随机推荐

  1. WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值

    事故现场 报错"从客户端 中检测到有潜在危险的Request.Form值" //后台代码 namespace Test { [RoutePrefix("TestClass ...

  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器同步输出http-flv协议流是怎么实现的?

    http-flv是什么 http-flv是以http为传输协议,flv媒体格式为内容的方式实时下载flv音视频帧.为什么选择flv格式而非mp4?原因是mp4必须要有moov box或者moof bo ...

  3. SVN + Jenkins 构建自动部署

    1. 前言 因为研发部门不想把他们的源代码 git 到服务器再编译,git + maven + jenkins 的方式行不通,于是采用 svn + jenkins的方式,流程如下: 只需要 程序员 手 ...

  4. 容器版jenkins使用宿主机的docker命令

    参照里面的第一步里面的dockerfile: https://www.cnblogs.com/effortsing/p/10486960.html

  5. haproxy2.0入门部署教程

    测试后发现,haproxy2.0和之前的版本部署有些许差异,配置文件的写法也是不同的 测试环境:Centos7.3 IP:172.16.1.227 172.16.1.228 部署httpd,页面内容为 ...

  6. servlet 标红的错误笔记

    错误原因,没有添加来自Tomcat服务器的jar包依赖. 解决方法

  7. SpringMVC中静态资源的处理

    web项目中web.xml配置 在一个使用springmvc的web项目中,必然在web.xml中要配置前端控制器DispatcherServlet <servlet> <servl ...

  8. C++和C API调用

    c++是C的超集,不可避免的要兼容C的特性,C++在C基础山的拓展部分叫做C with class,同时C++有自己特有的属性比如模板template. C并不完全是C++的子集. 那么如何在C/C+ ...

  9. [Oracle] Io Error: The Network Adapter could not establish the connection 解决方案

    Io 异常: The Network Adapter could not establish the connection这个异常的出现一般与数据库和你的PC的设置有关 这种异常的出现大致上有下面几种 ...

  10. STL源码剖析——序列式容器#1 Vector

    在学完了Allocator.Iterator和Traits编程之后,我们终于可以进入STL的容器内部一探究竟了.STL的容器分为序列式容器和关联式容器,何为序列式容器呢?就是容器内的元素是可序的,但未 ...