• 使用Junit测试框架学习Java


    前言

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

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

  • 相关阅读:
    jsp的DAO三层-------------实现登录功能
    JSP前后台交互实现注册、登录功能
    结构化查询语言----SQL基本操作
    HTML5 Web存储
    jQuery 属性和CSS
    jQuery DOM操作
    JS中的函数、BOM和DOM操作
    接口和抽象类
    单例模式
    IP介绍
  • 原文地址:https://www.cnblogs.com/love-yh/p/11569908.html
Copyright © 2020-2023  润新知