b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

junit4单元测试实例_junit3单元测试实例_junit4单元测试小程序(5)

电脑杂谈  发布时间:2017-01-12 00:04:33  来源:网络整理

六、忽略测试某些尚未完成的方法。

如果你在写程序前做了很好的规划,那么哪些方 法是什么功能都应该实现定下来。因此,即使该方法尚未完成,他的具体功能也是确定的,这也就意味着你可以为他编写测试用例。但是,如果你已经把该方法的测 试用例写完,但该方法尚未完成,那么测试的时候一定是“失败”。这种失败和真正的失败是有区别的,因此JUnit提供了一种方法来区别他们,那就是在这种 测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不 是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。

七、Fixture(暂且翻译为“固定代码段”)

Fixture的含义就是“在某些阶段必然被 调用的代码”。比如我们上面的测试,由于只声明了一个Calculator对象,他的初始是0,但是测试完加法操作后,他的就不是0了;接下来测试减 法操作,就必然要考虑上次加法操作的结果。这绝对是一个很糟糕的设计!我们非常希望每一个测试都是独立的,相互之间没有任何耦合度。因此,我们就很有必要 在执行每一个测试之前,对Calculator对象进行一个“复原”操作,以消除其他测试造成的影响。因此,“在任何一个测试执行之前必须执行的代码”就 是一个Fixture,我们用@Before来标注它,如前面例子所示:

@Before

public void setUp() throws Exception …{

calculator.clear();

}

这里不在需要@Test标注,因为这不是一个test,而是一个Fixture。同理,如果“在任何测试执行之后需要进行的收尾工作”也是一个Fixture,使用@After来标注。由于本例比较简单,没有用到此功能。

一、高级Fixture

二、限时测试。

还记得我在初级篇中给出的例子吗,那个求平方根的函数有Bug,是个死循环:

public void squareRoot(int n) …{

for (;;) ; //Bug : 死循环

}

如果测试的时候遇到死循环,你的脸上绝对不会 露出笑容。因此,对于那些逻辑很复杂,循环嵌套比较深的程序,很有可能出现死循环,因此一定要采取一些预防措施。限时测试是一个很好的解决方案。我们给这 些测试函数设定一个执行时间,超过了这个时间,他们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug 了。要实现这一功能,只需要给@Test标注加一个参数即可,代码如下:

@Test(timeout = 1000)

public void squareRoot() …{

calculator.squareRoot(4);

assertEquals(2, calculator.getResult());

}

Timeout参数表明了你要设定的时间,单位为毫秒,因此1000就代表1秒。

三、 测试异常

JA中的异常处理也是一个重点,因此你经 常会编写一些需要抛出异常的函数。那么,如果你觉得一个函数应该抛出异常,但是它没抛出,这算不算Bug呢?这当然是Bug,并JUnit也考虑到了这一 点,来帮助我们找到这种Bug。例如,我们写的计算器类有除能,如果除数是一个0,那么必然要抛出“除0异常”。因此,我们很有必要对这些进行测试。 代码如下:

@Test(expected = ArithmeticException.class)

public void divideByZero() …{


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25681-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 钱安安
      钱安安

      中国可能采用撞击的方式回击一下

    • 司马聃
      司马聃

      加油加油加油加油加油加油

    • 鲁隐公姬息
      鲁隐公姬息

      我们国家可以把土地重复利用我们也可以用好多年的积蓄买一套二三线城市的房

    热点图片
    拼命载入中...