前言

  在日常的开发中,离不开单元测试,而且在学习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()); }
}
}

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

最新文章

  1. Oracle 分页
  2. 微信小程序 设计理念指南
  3. nios II--实验2——led软件部分
  4. UVA 10817 十一 Headmaster&#39;s Headache
  5. POJ 3468 线段树裸题
  6. python爬虫框架scrapy初识(一)
  7. C#未将对象引用设置到对象的实例
  8. (转)Java线程:新特征-线程池
  9. [Codeforces375E]Red and Black Tree
  10. 用javascript写原生ajax(笔记)
  11. kafka安装步骤
  12. 牛刀小试MySQL--日志文件
  13. Django文件存储(二)定制存储系统
  14. gcd(欧几里得算法)
  15. 详解php多人开发环境原理
  16. inux中Vi不能高亮显示行号的解决办法
  17. AC日记——[ZJOI2015]幻想乡战略游戏 洛谷 P3345
  18. Microsoft.VisualStudio.Shell.14.0.dll 文件位置
  19. Unable to verify your data submission错误解决
  20. IE浏览器下 Vue2.x 和 Angular 应用无法打开

热门文章

  1. LODOP条码二维码简短问答及相关博文
  2. [LeetCode] 804. Unique Morse Code Words 独特的摩斯码单词
  3. maven项目打包跳过单元测试
  4. 【VS开发】#pragma pack(push,1)与#pragma pack(1)的区别
  5. TCP/IP学习笔记2--协议分层与OSI参考模型
  6. K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
  7. PB对象Event ID说明
  8. xxx商城之架构和功能简述
  9. k8s部署traefik
  10. db跟随集群自启动