第一行代码总结:13.5.2进行单元测试

来源:互联网 发布:局域网数据备份 编辑:程序博客网 时间:2024/06/10 20:28

13.5.2进行单元测试

单元测试:是指对软件中最小的功能模块进行测试,如果软件中的每一个单元都能通过测试,说明代码的健壮性就已经非常好了。

步骤:

1、首先在测试工程中新建一个类,继承自AndroidTestCase类,然后重写setUp()和tearDown()方法。

setUp()方法会在所有的测试用例执行之前调用,可以在这里进行一些初始化的操作。tearDown()方法会在所有的测试用例之后调用,可以在这里进行一些资源释放的操作。

如下所示,

public classActivityCollectorTest extends AndroidTestCase{

  @Override

  protected void setUp() throws Exception{

    super.setUp();

  }

  //中间写测试用例

   ……

  @Override

  protected void tearDown() throws Exception {

    super.tearDown();

  }

 }

 

2、编写测试用例。只需要定义一个以test开头的方法,测试框架就会自动调用这个方法了。然后我们在方法中可以通过断言(assert)的形式来期望一个运行结果,再和实际的运行结果进行对比,这样一条测试用例就完成了。测试用例覆盖的功能越广泛,程序出现bug的概率就会越小。

   如:

   public void testAddActivity(){

      //断言0和集合中activity的个数相等,即集合中有0个activity

    assertEquals(0,ActivityCollector.activities.size());

      //new出一个新的Activity实例

     LoginActivity loginActivity = newActivity();

      //将新的activity实例添加到集合中

     ActivityCollector.addActivity(loginActivity);

      //再次进行断言,认为集合中的activity的个数是1

    assertEquals(1,ActivityCollector.activities.size());

   }

3、运行测试用例。右击测试工程——>Run As——>Android JUnit Test。

   运行结果:Runs:2/2   Errors:0    Failures:0

4、再编写一些特殊情况下的断言,看看程序是否还能正常工作。这次还是想集合中添加相同的activity。这时我们觉得ActivityCollector有能力过滤掉重复的数据,因此在断言的时候认为目前ActivityCollector中活动的个数仍然是1.

   public void testAddActivity(){

      //断言0和集合中activity的个数相等,即集合中有0个activity

    assertEquals(0,ActivityCollector.activities.size());

      //new出一个新的Activity实例

     LoginActivity loginActivity = newActivity();

      //将新的activity实例添加到集合中

     ActivityCollector.addActivity(loginActivity);

      //再次进行断言,认为集合中的activity的个数是1

    assertEquals(1,ActivityCollector.activities.size());

     //向集合中再次添加同一个对象

     ActivityCollector.addActivity(loginActivity);

     //断言集合中activity的个数不变,认为重复加入的activity会被过滤掉。

     assertEquals(1,ActivityCollector.adtivites.size());

   }

5、运行测试用例。

  测试没有通过,结果是:Runs:2/2  Errors:0    Failures:1

  从这个测试用例中我们发现,addActivity()方法中的代码原来是不够健壮的,它没有自动对重复的一样的对象进行过滤。所以,这个时候我们就应该对该代码进行优化了。在addActivity()方法中应该加入一个if判断。

 

之后,你可以不断地补充新的测试用例,让程序永远都可以跑通所有的测试用例,这样的程序才会更加健壮,出现bug的概率也会更小。

0 0