JUnit

作者: lv_shun | 来源:发表于2020-09-28 00:23 被阅读0次

    单元测试是对软件开发过程中必不可少的过程。准确的完备的单元测试可以帮助开发者提高代码质量,降低bug率。

    测试代码必须要做一下几件事:

    • 准备测试所需要的各种条件(创建所有需要的对象,分配必要的资源等等)
    • 调用要测试的方法
    • 验证被测试方法的行为和期望是否一致
    • 完成后清理各种资源

    JUnit各种断言

    • assertEquals 是否相等

    参数说明:

    1. 中断时展示的信息(可选)
    2. 期望值
    3. 实际值
        @Test
        public void test() {
            assertEquals("咋就不相等", 1,2);
        }
    
    • assertNull 是否为空

    参数说明:

    1. 中断时展示的信息(可选)
    2. 目标
    • assertSame 对象引用是否相同

    参数说明:

    1. 中断时展示的信息(可选)
    2. 期望对象
    3. 目标对象
    • assertTrue 是否为真

    参数说明:

    1. 中断时展示的信息(可选)
    2. 表达式
    • fail 立即失败

    参数说明:

    1. 中断时展示的信息(可选)
    • assertThat

    还有个assertThat方法,可以替代所有方法。需要引入静态类:

    import static org.hamcrest.Matchers.*;
    ...
     @Test
        public void testThat() {
            assertThat(1, is(1));
            assertThat(1, not(2));
            assertThat(null, nullValue());
            User user = new User();
            User user2 = user;
    
            assertThat(user, sameInstance(user2));
    
            assertThat(Boolean.TRUE, is(Boolean.TRUE));
        }
    

    annotation

    @Test

    标记一个方法为测试方法,同时注解里支持expected设置测试过程中预期抛出的异常,如果抛出对应异常,测试通过。

        @Test(expected = Exception.class)
        public void testException() {
            assertThat(1,is(8/0));
        }
    

    @Before @After

    在每个@Test方法执行前后被调用

    @BeforeClass @AfterClass

    在测试类初始化前和销毁之前调用,注意使用在静态方法上,通常完成一些耗时又通用的时候使用。

    package com.zhongyouex.clothes.partner;
    
    import com.sun.org.apache.xpath.internal.operations.Bool;
    import org.apache.catalina.User;
    import org.junit.*;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import static org.junit.Assert.assertEquals;
    import static org.junit.Assert.assertThat;
    import static org.hamcrest.Matchers.*;
    
    /***
     * @Title
     * @author lv
     * @Date 2020/9/26 17:01
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    public class TestTest {
    
        @Test
        public void test() {
            assertEquals("咋就不相等", 1,1);
        }
    
        @Test
        public void testThat() {
            assertThat(1, is(1));
            assertThat(1, not(2));
            assertThat(null, nullValue());
            User user = new User();
            User user2 = user;
    
            assertThat(user, sameInstance(user2));
    
            assertThat(Boolean.TRUE, is(Boolean.TRUE));
        }
    
            @Test(expected = Exception.class)
            public void testException() {
                assertThat(1,is(8/0));
            }
    
            @Before
            public void before() {
                System.out.println("before");
            }
    
            @After
            public void after() {
                System.out.println("after");
            }
    
            @BeforeClass
            public static void beforeClass() {
                System.out.println("beforeClass");
            }
    
            @AfterClass
            public static void afterClass() {
                System.out.println("afterClass");
            }
    
    
    
        private class User {
            private String name;
            private int age;
        }
    }
    

    相关文章

      网友评论

          本文标题:JUnit

          本文链接:https://www.haomeiwen.com/subject/kkzcuktx.html