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

这篇博客对比了在Android单元测试中使用AssertJ Android、Regular JUnit和Regular AssertJ进行断言的方式,强调了AssertJ Android在形式和输出结果上的优势。文章通过创建一个`Draft`数据结构,自定义`DraftAssert`断言类,并演示了如何在测试中使用自定义断言,以提高测试代码的可读性和效率。
摘要由CSDN通过智能技术生成

首先看一组对比,比如说我们要测试的结果是一个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 but was .

Regular JUnit Expected: but was:

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{

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 but was ", name,

draft.getDisplayedTitle());)

return this;

}

}

3、使用的时候

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值