如何写单元测试(5)—Android开发进阶

发表于:2016-6-27 13:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:何红辉    来源:51Testing软件测试网原创

  (51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  9.4.2.2  Junit的断言和失败提示
  单元测试的目的就是验证代码的正确性,因此,提供了多重断言函数,也就是以assert开头的函数,分别用来验证各类相等性问题。大致有如下几类:
  1.assertEquals
  assertEquals的作用是判断两个值或者对象是否相等。该函数含有两个参数,参数1为预期的值,参数2为计算得到的值。通过判断两个值是否相等得出结果,如果相等那么测试通过,否则测试失败。
  2.assertTrue与assertFalse
  assertTrue与assertFalse顾名思义就是分别验证真与假,它只有一个boolean类型的参数。当参数与assert后面的true或者false对应时则表示通过,否则失败。例如当assertTrue( 1 == 2 ),则测试失败,因为1 == 2 的值为false,如果是assertTrue( 1 == 1 ),那么测试通过。assertFalse原理相同。
  3.assertNull与assertNotNull
  与assertTrue、assertFalse类似,assertNull与assertNotNull也只有一个参数,不过这个参数是Object类型,它用于对对象判空或者非空。例如,当assertNull ( null ),则测试失败,因为值为null; 如果是assertNull("hello"),那么测试通过。assertNotNull原理相同。
  4.assertSame与assertNotSame
  assertSame用于判断两个对象是否是同一个对象,assertNotSame则是判断两个对象不是同一个对象。与assertEquals不同的是,assertSame强调的是两个对象为同一个对象,而assertEquals只要两个对象相等即可,即调用equals函数时返回true。
  5.failNotEquals
  该函数有3个参数,第一个参数为失败时的提示信息,参数2为期望值,参数3为实际值。当两个对象不相等时测试抛出参数1的错误信息,否则测试通过。
  6.failNotSame与failSame
  failNotSame与failNotEquals参数一致,不同的是failNotSame两个对象不是同一个对象时抛出参数1的错误信息,否则测试通过。
  7.fail(String)与fail()
  fail(String)直接抛出当前测试用例参数1中的错误信息,而fail则会给出默认的错误信息。
  9.4.2.3  运行多个测试类-TestSuite
  上节中演示的都是运行单个测试类,但是,现实生活中我们可能需要同时运行多个测试类。此时,我们的TestSuite就派上用场了。TestSuite就是用来执行多个测试类的集合,使用Junit 4有两种实现方式。第一种是通过JUnit4TestAdapter包装测试类,并且将JUnit4TestAdapter对象添加到TestSuite中。我们新建一个DiverTest测试类和MathTestSuite类,MathTestSuite代码如下:
public class MathTestSuite {
public static Test suite() {
TestSuite suite = new TestSuite("com.book.jtm");
// 添加测试用例
suite.addTest(new JUnit4TestAdapter(AdderTest.class));
suite.addTest(new JUnit4TestAdapter(DiverTest.class));
return suite;
}
}
  在MathTestSuite类中有一个静态的suite函数,在该函数中返回一个Test对象,这个对象就是TestSuite类型的。在suite函数中将多个测试类通过JUnit4TestAdapter包装后添加到TestSuite对象中即可。然后以Junit测试用例的形式运行这个MathTestSuite即可运行这两个测试类。如图9-8所示。
  另一种形式是使用注解,代码修改如下:
@RunWith(Suite.class)
@Suite.SuiteClasses({
AdderTest.class,    // 加法的测试用例
DiverTest.class,    // 除法的测试用例
})
public class MathTestSuite {
}
  此时MathTestSuite成了一个空类,测试类被添加到注解当中了。运行MathTestSuite也可以得到如图9-8所示的结果。
  Junit只是为我们提供了基本的测试环境,测试哪些内容才是我们学习单元测试的重点。下一节中我们就一起来学习单元测试要测试的点,通过这些测试点来保证我们的单元测试能够覆盖到一些特殊的条件,使的测试变得更有价值。
本文选自《Android开发进阶—从小工到专家》第九章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
开发人员必备的技能之单元测试(4)—Android开发进阶
33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号