如何写好单元测试(Junit测试)?
2013-11-15 18:04
330 查看
Junit可以说是在Java里面最具代表性的单元测试工具。
虽然我们是程序员,但是在大环境下却经常要肩负起软件测试员的工作。而我们写的最多的测试一般都是JunitTest单元测试。
但是Junit测试需要一定的规范才使得它更有意义,首先命名方面就有一定的规范:
类名:
测试类名为:Test类名
如果要测试LoginService,那么你应该创建一个测试类叫 TestLoginService.
方法名:
测试方法名为:test要测试的方法(首字母大写)[_测试结果]
如果要测试login,方法名为testLogin(),
如果要测试login失败,方法名为testLogin_fail(),
以上为Junit单元测试的命名约定。
----------------------------------------------------------------------------------
下面再来看看,测试方法应该怎么写。
下面是一个testLogin()的方法:
相信很多人都习惯这么简单地写一个单元测试,在测试方法里只调用业务方法。但是这样做只能测试到login()这个方法有没有调通,并不能比较结果是否符合预期。
所以我们一般都加上断言(Assert)
上面是断言这个登陆返回true,也就是登陆成功。
但是有时候我们可能会断言结果不准确,例如密码不小心敲错了,那么login()方法应该会返回一个密码错误异常。而断言错误会使得我们的JunitTest不通过,这意味着单元测试出现问题。但是这明显不是login()的问题,所以我们可以加上try...catch块来保证测试方法通过:
上面添加了捕捉密码失败异常的代码,那么即使发生非程序错误,也可以正确地通过测试方法。
最后介绍个学习网站:Here
虽然我们是程序员,但是在大环境下却经常要肩负起软件测试员的工作。而我们写的最多的测试一般都是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
相关文章推荐
- 如何写好单元测试(Junit测试)?
- IT 测试:足迹第十九步了解黑盒测试、集成测试和单元测试(如何使用JUnit)
- java junit (单元测试)测试工具如何使用?
- 如何利用JUnit开展一个简单的单元测试(测试控制台输出是否正确)
- 如何写好的测试报告
- 【软件测试】使用JUnit框架实现Java单元测试
- JUnit 4 如何正确测试异常
- JUnit单元测试实践:测试工具类和方法(EmptyUtils)
- JUnit自动化单元测试(五):参数化测试
- 刚刚搜素到的 vc 进行单元 测试如何使用VC6进行单元测试
- 如何使用Junit测试使用Spring框架的代码
- Android、JUnit深入浅出(六)——如何运行单元测试?
- 如何更好的进行单元测试——JUnit
- Java单元测试Junit(六)使用Cobertura生成测试覆盖率报告
- 软件测试技术JUnit和单元测试入门简介--单元测试及软件测试技术概念以及JUnit编写原则和特征
- java单元测试junit测试线程问题
- Junit 4.x 单元测试,参数化测试,套件测试 实例
- ionic之如何应用karma进行单元测试(2)-测试controller和service
- 如何用maven搭建Junit测试环境
- 如何使用Junit编写和组织测试程序