android中单元测试中的断言assert的使用与扩展

首先看一组对比,比如说我们要测试的结果是一个Linearlaout

  • AssertJ Android:

    assertThat(layout).isVisible()
        .isVertical()
        .hasChildCount(4)
        .hasShowDividers(SHOW_DIVIDERS_MIDDLE);
    
  • Regular JUnit:
    assertEquals(View.VISIBLE, layout.getVisibility());
    assertEquals(VERTICAL, layout.getOrientation());
    assertEquals(4, layout.getChildCount());
    assertEquals(SHOW_DIVIDERS_MIDDLE, layout.getShowDividers());
    
  • Regular AssertJ:
    assertThat(layout.getVisibility()).isEqualTo(View.VISIBLE);
    assertThat(layout.getOrientation()).isEqualTo(VERTICAL);
    assertThat(layout.getChildCount()).isEqualTo(4);
    assertThat(layout.getShowDividers()).isEqualTo(SHOW_DIVIDERS_MIDDLE);

从形式上,使用上更加方便。

从输出结果上看,输出结果更加直接可见。

  • AssertJ Android:     Expected visibility <gone> but was <invisible>.
  • Regular JUnit          Expected:<[8]> but was:<[4]>
  • Regular AssertJ:     Expected: <8> but was: <4>

所以接下来我们来看看  Assert Android如何来使用。

1首先写一个待测试的数据结构

public class Draft{

private String id;//草稿的唯一标识id

private String uid ;//发送账号uid,以区别不同账号的草稿

private int type;//保存的类型

private String displayedTitle;//展示标题内容

}

2 \首先我们来自定义一个断言类:

public class DraftAssert extends AbstractAssert<DraftAssert
,Draft>{

public DraftAssert
(Draft draft){

super(draft,DraftAssert.class);}

}

public static DraftAssert
 assertThat(Draft draft){

return new
DraftAssert (draft);}

public DraftAssert  hasDisplayedName(String name){

isNotNull();

if (!draft.getDisplayedTitle().equals(name)){

failWithMessage(("Expected character‘s name to be <%s> but was <%s>", name,

draft.getDisplayedTitle());)

return this;

}

}

3、使用的时候

DraftAssert.assertThat(draft).hasDisplayedName("@罗浩");

如果导入DraftAssert.assertThat静态导入的话,你还可以直接使用

assertThat(draft).hasDisplayedName("@罗浩");

时间: 2024-08-06 06:15:24

android中单元测试中的断言assert的使用与扩展的相关文章

Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

在Junit4中还有的测试注解有:  @BeforeClass ,@Before,@Test,@After,@AfterClass 1.其中:@BeforeClass,@AfterClass是Junit4中新添加进去的 2.如果Run as --->Junit Test,运行含有@Test注释的方法是,那么所有注解方法都将被执行,所含的执行顺序是: @BeforeClass ,@Before,@Test,@After,@AfterClass 3.在JUnit4中,如果测试类继承了TestCase

Android之单元测试学习

1.单元测试概念 单元测试(又称为模块测试),检验程序模块(软件设计的最小单位)正确性的测试工作,常常是程序员写的一段代码.对于面向对象编程,最小单元就是方法,包括基类(超类).抽象类.或者派生类(子类)中的方法. android中的测试框架是扩展的junit3,所以在学习android的单元测试之前,可以先学习junit3的使用.junit3要学习的东西其实也不多. junit3的入门可以参考:http://android.blog.51cto.com/268543/49994 文档:http

Android Day02-Android中单元测试(junit测试)&monkey测试

Android中junit测试有2种实现方式 第1种:一般Android工程的实现方式 1.在清单文件中添加2项内容 首先在AndroidManifest.xml中加入下面红色代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.action" android:versionCode="1"  android:v

Android应用开发中如何进行单元测试

(一. 对某个方法进行测试) 转载自: http://www.cnblogs.com/feisky/archive/2010/07/23/1783826.html Menifest.xml中加入: <application>中加入: <uses-library android:name="android.test.runner" /> <application>外面加入: <uses-permission android:name="

Android开发中单元测试的两种方式

Android开发中单元测试的两种方式 一位优秀的程序员也同样不能保证自己的程序没有bug,因此编写合适的测试程序是完全有必要的,这样也会降低程序在后期出现各种奇奇怪怪bug的可能,降低维护成本,未雨绸缪将bug扼杀在摇篮之中. 看到网上有很多依旧用写java单元测试的方式在写android程序的单元测试程序--junit,当然我一直都反感将不合时宜的东西强搬到新的技术应用以获取一席之地的这种做法,不断的应用新的方法提高效率,完善程序才是真理!废话不多说,直接说到今天的重点:Android开发中

C语言中断言ASSERT

我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错". 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立) { 程序正常运行: } else { 报错&&终止程序!(避免由程序运行引起更大的错误) } 但是这样写的话,就会有无数个if语句,甚至会出现,

c#中单元测试

从走进.net后发现每天有写不完的代码,有做不完的测试...人感觉都已经机械,我们需要认清自己调整好心态,问下自己是否真的喜欢编程.我的答案当然也就是我爱编码,编码给我带来了许多欢乐,每天都给我体验小小成就.所以我要为我写的编码负责.那么先总结下测试方面的小小积累,作为以后复习的笔记. 在团队开发中单元测试扮演着一个很重要的角色. 例如:当你和你的团队一起开发时,由你写操作数据库的方法,其他人写界面,当你写好你的方法后你需要对你写的方法负责,不能说后面还有软件测试工程师,测试这种事留给他们去做.

访何红辉:谈谈Android源码中的设计模式

最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计模式,以及近期Android开发中的一些热点话题. 受访嘉宾介绍: 何红辉(@MrSimp1e),前友盟Android工程师,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享.Android开源库 AndroidEventBus . Colorful 作者, 开发技术前线 站长,<Android源码

浅谈Android系统开发中LOG的使用

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录.在Android系统中,提供了简单.便利的LOG机制,开发人员可以方便地使用.在这一篇文章中,我们简单介绍在Android内核空间和用户空间中LOG的使用和查看方法. 一. 内核开发时LOG的使用.Android内核