仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 612|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA网页编程之Java中测试非常的多种体例仓酷云

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。利用JUnit来测试Java代码中的非常有良多种体例,你晓得几种?
给定如许一个class。
Person.java
  1. 12345678910111213141516171819202122232425
复制代码
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}
复制代码
我们来测试setAge办法。
Try-catch体例
  1. 1234567891011
复制代码
  1. @TestpublicvoidshouldGetExceptionWhenAgeLessThan0(){Personperson=newPerson();try{person.setAge(-1);fail("shouldgetIllegalArgumentException");}catch(IllegalArgumentExceptionex){assertThat(ex.getMessage(),containsString("ageisinvalid"));}}
复制代码
这是最简单想到的一种体例,可是太隆
JUnitannotation体例

JUnit中供应了一个expected的annotation来反省非常。
  1. 123456
复制代码
  1. @Test(expected=IllegalArgumentException.class)publicvoidshouldGetExceptionWhenAgeLessThan0(){Personperson=newPerson();person.setAge(-1);}
复制代码
这类体例看起来要简便多了,可是没法反省非常中的动静。
ExpectedExceptionrule

JUnit7今后供应了一个叫做ExpectedException的Rule来完成对非常的测试。
  1. 123456789101112
复制代码
  1. @RulepublicExpectedExceptionexception=ExpectedException.none();@TestpublicvoidshouldGetExceptionWhenAgeLessThan0(){Personperson=newPerson();exception.expect(IllegalArgumentException.class);exception.expectMessage(containsString("ageisinvalid"));person.setAge(-1);}
复制代码
这类体例既能够反省非常范例,也能够考证非常中的动静。
利用catch-exception库

有个catch-exception库也能够完成对非常的测试。
起首援用该库。
pom.xml
  1. 123456
复制代码
  1. <dependency><groupId>com.googlecode.catch-exception</groupId><artifactId>catch-exception</artifactId><version>1.2.0</version><scope>test</scope><!--testscopetouseitonlyintests--></dependency>
复制代码
然后如许誊写测试。
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}0
复制代码
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}1
复制代码
如许的优点是能够精准的考证非常是被测办法抛出来的,而不是别的办法抛出来的。
catch-exception库还供应了多种API来举行测试。
先加载fest-assertion库。
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}2
复制代码
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}3
复制代码
然后能够誊写BDD作风的测试。
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}4
复制代码
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}5
复制代码
假如喜好Hamcrest作风的考证作风的话,catch-exception也供应了响应的MatcherAPI。
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}4
复制代码
  1. publicclassPerson{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){if(age<0){thrownewIllegalArgumentException("ageisinvalid");}this.age=age;}}7
复制代码
第一种最土鳖,第二种最简便,第四种最靠谱。


java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
若天明 该用户已被删除
沙发
发表于 2015-1-20 18:32:50 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 14:28:25 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
变相怪杰 该用户已被删除
地板
发表于 2015-2-4 21:56:56 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
分手快乐 该用户已被删除
5#
发表于 2015-2-6 13:04:26 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
飘灵儿 该用户已被删除
6#
发表于 2015-2-10 00:26:21 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
不帅 该用户已被删除
7#
发表于 2015-2-26 23:57:56 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
8#
发表于 2015-3-8 18:31:09 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
第二个灵魂 该用户已被删除
9#
发表于 2015-3-9 21:18:23 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
柔情似水 该用户已被删除
10#
发表于 2015-3-17 01:10:17 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-23 11:29:54 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表