zoukankan      html  css  js  c++  java
  • 如何写好单元测试(Junit测试)?

    Junit可以说是在Java里面最具代表性的单元测试工具。

    虽然我们是程序员,但是在大环境下却经常要肩负起软件测试员的工作。而我们写的最多的测试一般都是JunitTest单元测试。

    但是Junit测试需要一定的规范才使得它更有意义,首先命名方面就有一定的规范:

    类名:

    测试类名为:Test类名

    如果要测试LoginService,那么你应该创建一个测试类叫 TestLoginService.

    方法名:

    测试方法名为:test要测试的方法(首字母大写)[_测试结果]

    如果要测试login,方法名为testLogin(),

    如果要测试login失败,方法名为testLogin_fail(),

    以上为Junit单元测试的命名约定。

    ----------------------------------------------------------------------------------

    下面再来看看,测试方法应该怎么写。

    下面是一个testLogin()的方法:

        @Test
        public void testLogin() throws Exception {
            loginService.login();
        }

    相信很多人都习惯这么简单地写一个单元测试,在测试方法里只调用业务方法。但是这样做只能测试到login()这个方法有没有调通,并不能比较结果是否符合预期。

    所以我们一般都加上断言(Assert)

        @Test
        public void testLogin() throws Exception {
            Assert.assertTrue(loginService.login());
        }

    上面是断言这个登陆返回true,也就是登陆成功。

    但是有时候我们可能会断言结果不准确,例如密码不小心敲错了,那么login()方法应该会返回一个密码错误异常。而断言错误会使得我们的JunitTest不通过,这意味着单元测试出现问题。但是这明显不是login()的问题,所以我们可以加上try...catch块来保证测试方法通过:

        @Test
        public void testLogin() throws Exception {
            try{
                Assert.assertTrue(loginService.login());
            }catch(WrongPasswordException ex){
                Assert.assertEquals("密码不正确", ex.getMessage());
            }
        }

    上面添加了捕捉密码失败异常的代码,那么即使发生非程序错误,也可以正确地通过测试方法。

    最后介绍个学习网站:Here

  • 相关阅读:
    python学习笔记——拾
    python学习笔记——玖
    Python 实现栈与队列
    Vijos1774 机器翻译 [模拟]
    Vijos1788 第K大 [模拟]
    Python 序列求和
    HDU 2102 A计划 DFS与BFS两种写法 [搜索]
    Python 多组输入
    Python 文件读写
    HDU 2068 RPG错排 [错排公式]
  • 原文地址:https://www.cnblogs.com/cha1r/p/3425887.html
Copyright © 2011-2022 走看看