我用的是旧版本的junit,写出来楼主看看有没有帮助吧用try-catch包起来
try{
i = i / 0;
fail();
}catch(XXXException e){
// do sth.
}也就是如果除法正常执行下去,就说明出错了,fail()也是保险,很明显走不到这里。
如果走到catch里面,就说明正常,就通过。
(正常系的测试应该是fail放在catch里面)good luck
try{
i = i / 0;
fail();
}catch(XXXException e){
// do sth.
}也就是如果除法正常执行下去,就说明出错了,fail()也是保险,很明显走不到这里。
如果走到catch里面,就说明正常,就通过。
(正常系的测试应该是fail放在catch里面)good luck
感觉楼主想问的内容和junit没什么关系。从结构上讲,
实现代码不会也不可能出现在测试代码里,
所以楼主这个例子把我带到沟里了。呵呵洗个澡继续说,楼主所想问的和测试和测试手段没有关系,
应该是一个整体的结构,
按照你的要求,例如关闭资源等等,
应该是被测试的代码里实现的,
例如这样的代码:
(用英文代替代码)
public void a(int i){
open a connection
try{
x = 10 / i;
}catch(Exception e){
do sth. or throw exception
}finally{
close connection.
}
}这样再测试这个a方法的时候,就不涉及到楼主所说的“执行不了after...”的问题了。
出错就正确了,然后善后的事情也会被a处理
(也不应该是楼主想的让测试代码处理)
(再来个括号,dbunit这种的不算让测试代码处理,因为它处理的也是一个测试环境,一个桃花源罢了)
有了exception就应该执行不到下一句了的。
出错了再执行,那不更错了。呵呵楼主把视点再往高处看一下就应该OK了good luck
由于在测试中我们可能会期望出现某个异常(不出现这个异常反而不对),但是在出现异常后我们又想执行后面的动作,就像我的例子中出现期望的除0异常,又想继续执行后面的System.out.println("after exception")语句一样。我就是想问怎样达到这个目的(用JUnit4)。
当然,我并没有认为楼上的朋友用JUnit以前的版本就落后的意思,请见谅。只不过我们的项目要求用JUnit4.呵呵!
楼主是不是想测试完了一个Exception再继续测试之后的代码?不过根据单元测试的思想,
也就是“每个测试点应该是各自独立的”(大概是这个意思吧),如果按照楼主的想法,
一个测试方法之中要测试一个exception,
然后又想执行后面的动作(或者说是想继续测试之后的逻辑)这样应该不太好吧?!例如看easymock的例子,
里面测试Exception的时候,也是调用xxx.andThrow()
然后就verify了(好像拼错了吧?理解精神喽)
就是体现了“一个测试点一个测试”也就是说,
Exception应该是一个测试点,
“之后的操作”应该是另一个测试点,
如果写方法的话,应该有2个,
大概是这个样子:
public void testANormal(){} <-专门测试“没有Exception”的“之后”的代码
public void testAException(){} <-专门测试Exception又占了一层楼,不好意思啦good luck
以后确实应该把视点往高处看一下,这样就不会老去钻牛角尖了!