上善若水
In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 146,comments - 147,trackbacks - 0
<
2012年11月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
(157)
Architecture(7)
Cassandra
CodeTools(5)
Core Java(22)
Database(3)
EHCache(6)
GC(4)
GemFire(3)
Guava(2)
Hadoop(4)
HBase(9)
Jetty(19)
JUnit(6)
Linux(5)
Logging(11)
MultiThreading(8)
Netty(2)
Protobuf(3)
Spring(2)
学习积累(6)
收藏(12)
深入JVM(9)
深入源码(2)
经验积累(6)
金融知识(1)
随笔档案
(125)
2015年11月 (1)
2015年9月 (5)
2015年8月 (7)
2015年7月 (1)
2015年4月 (6)
2015年2月 (1)
2015年1月 (1)
2014年12月 (2)
2014年7月 (3)
2014年6月 (2)
2014年5月 (15)
2014年4月 (2)
2014年3月 (5)
2013年12月 (2)
2013年11月 (3)
2013年10月 (8)
2012年12月 (2)
2012年11月 (13)
2012年9月 (1)
2012年7月 (6)
2012年6月 (2)
2012年5月 (6)
2012年4月 (1)
2012年2月 (1)
2011年12月 (2)
2011年11月 (3)
2011年9月 (10)
2011年8月 (1)
2011年7月 (6)
2011年6月 (7)
收藏夹
(13)
DataBase(7)
Financial
Tools(6)
Java GC
GC - Jon Masamitsu @Oracle
GC - Poonam @Oracle
GC/Arch - Alexey Ragozin
Hotspot John Rose @Oracle
itcamel
Java General
Concurrent - xylz
ImportNew
landon
NoSQL
Carol McDonald @MapR
HBASE HADOOP INSTRUCTOR
Tech General
Learning Library @Oracle
Tech resource from Oracle
Quasar
王垠
Tech Master
Doug Lea @State University of New York
concurrent package author
Leslie Lamport
Distributed System, PAXOS author
MySQL-Performance
MySQL/MongoDB/MariaDB
Welsh, Matt @ Harvard
SEDA
董的博客-大数据相关
董的博客-大数据相关
最新随笔
1. 使用NamedParameterJdbcTemplate遇到无法使用的坑
2. SSTable详解
3. [转]高性能IO模型浅析
4. Netty3架构解析
5. Intercepting Filter模式详解
6. Reactor模式详解
7. 深入HBase架构解析(二)
8. 深入HBase架构解析(一)
9. Log4J引起的程序“装死”
10. 实现自己的Lock对象
搜索
积分与排名
积分 - 891155
排名 - 42
最新评论
1. re: 深入源码之SLF4J
评论内容较长,点击标题查看
--Rookie
2. re: Reactor模式详解
netty的Selector.select是使用系统的select实现的么?这个好像不大好,印象中好像是用epoll实现的?
--戈风
3. re: 【转】关于AccessController.doPrivileged
其实具体什么情况下需要用到AccessController.doPrivileged,平常业务代码基本不会用到,难道是在写框架的时候需要用到?什么类型的框架和场景?
--Kingson
4. re: 使用XStream序列化、反序列化XML数据时遇到的各种问题
继承上,子类对象 在toxml时, XStream只将子类的属性转xml了, 父类的属性没转换xml为何呢?
--MR熊
5. re: 深入Jetty源码之SecurityHandler
我想问一下,你这个有没有样例可以参考一下,我刚入jetty不久,对于这个LoginService的配置不是很熟悉,可以介绍一下,邮箱1204219804@qq.com
--小zhao
阅读排行榜
1. Reactor模式详解(112138)
2. 深入HBase架构解析(一)(60660)
3. Java Cache系列之Guava Cache实现详解(25372)
4. 使用XStream序列化、反序列化XML数据时遇到的各种问题(24980)
5. 深入Log4J源码之Log4J Core(23883)
评论排行榜
1. equals方法实现小记(10)
2. 深入JUnit源码之Runner(8)
3. [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(8)
4. 深入Log4J源码之Log4J Core(5)
5. finally知多少(5)
JUnit中对Exception的判断
说来惭愧,虽然之前已经看过JUnit的源码了,也写了几篇博客,但是长时间不写Test Case,今天想要写抛Exception相关的test case时,竟然不知道怎么写了。。。。。好记性不如烂笔头,记下来先~~
对于使用验证Test Case方法中抛出的异常,我起初想到的是一种比较简单的方法,但是显得比较繁琐:
@Test
public
void
testOldStyle()
{
try
{
double
value
=
Math.random();
if
(value
<
0.5
)
{
throw
new
IllegalStateException(
"
test
"
);
}
Assert.fail(
"
Expect IllegalStateException
"
);
}
catch
(IllegalStateException e)
{
}
}
Google了一下,找到另外几种更加方便的方法:1,使用Test注解中的expected字段判断抛出异常的类型。2,使用ExpectedException的Rule注解。
个人偏好用Test注解中的expected字段,它先的更加简洁,不管读起来还是写起来都很方便,并且一目了然:
@Test(expected
=
IllegalStateException.
class
)
public
void
testThrowException()
{
throw
new
IllegalStateException(
"
test
"
);
}
@Test(expected
=
IllegalStateException.
class
)
public
void
testNotThrowException()
{
System.out.println(
"
No Exception throws
"
);
}
对Rule注解的使用(只有在JUnit4.7以后才有这个功能),它提供了更加强大的功能,它可以同时检查异常类型以及异常消息内容,这些内容可以只包含其中的某些字符,ExpectedException还支持使用hamcrest中的Matcher,默认使用IsInstanceOf和StringContains Matcher。在BlockJUnit4ClassRunner的实现中,每一个Test Case运行时都会重新创建Test Class的实例,因而在使用ExpectedException这个Rule时,不用担心在多个Test Case之间相互影响的问题:
@Rule
public
final
ExpectedException expectedException
=
ExpectedException.none();
@Test
public
void
testThrowExceptionWithRule()
{
expectedException.expect(IllegalStateException.
class
);
throw
new
IllegalStateException(
"
test
"
);
}
@Test
public
void
testThrowExceptionAndMessageWithRule()
{
expectedException.expect(IllegalStateException.
class
);
expectedException.expectMessage(
"
fail
"
);
throw
new
IllegalStateException(
"expect fail
"
);
}
在stackoverflow中还有人提到了使用google-code中的catch-exception工程,今天没时间看了,回去好好研究一下。地址是:
http://code.google.com/p/catch-exception/
posted on 2012-11-02 15:02
DLevin
阅读(9631)
评论(0)
编辑
收藏
所属分类:
JUnit
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
JUnit中对Exception的判断
深入JUnit源码之Assert与Hamcrest
深入JUnit源码之Builder、Request与JUnitCore
深入JUnit源码之Rule
深入JUnit源码之Statement
深入JUnit源码之Runner