技术标签: Android
我们写单元测试时,经常会用到context对象,但是直接使用context经常报空指针异常
正确的mock方式如下
1.添加变量
@Mock
private Context mockApplicationContext;
2.在setUp方法中初始化
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
3.在使用到context的地方灵活使用mockito的when方法
比如我们用到context经常是因为String的关系,可以这样用
when(mockApplicationContext.getString(R.string.filterOthers))
.thenReturn("Other");
在我们测试时经常遇到静态类的静态方法无法通过测试,比如TextUtils
其mock顺序如下
1.测试类前声明
@RunWith(PowerMockRunner.class)
@PrepareForTest({TextUtils.class, Xxx.class})
public class Xxx{
}
2.初始化
@Before
public void setUp() throws Exception {
PowerMockito.mockStatic(TextUtils.class);
}
3.在具体的测试方法灵活使用mockito的when方法
比如
when(TextUtils.isEmpty(price.getType()))
.thenReturn(price.getType().length() == 0);
我们写测试方法时经常会遇到方法A调用B 方法B调用方法C的情况比如
if(flag1 == true){
methodA();
}else{
methodB(key);
}
methodA(){
if(flag2 == true){
methodC();
}else{
methodD();
}
}
methodB(key){
switch (key) {
case a:
methodE();
break;
case b:
methodF();
break;
case c:
methodG();
break;
default:
break;
}
}
那么我们写测试方法的顺序从末端的方法写会容易一些,比如上面这个例子我们写的顺序是EFG CD AB(组内顺序不区分)
当然如果写测试方法写的多了应该知道为方法A写测试方法时只要把两个分支都测了就OK了其实与方法内部调用的方法C和方法D没有关系。但是对于刚接触单元测试的我来说,这样写感觉上简单一些哈哈。
Linux平台oops问题分析_linux oops如何定位
指针声明和初始化int a = 5;int* p = &a; // & 取地址使用cout << *p << endl; // * 取值指针的危险 空指针 没有指向具有一定意义的内存野指针 指针变量未初始化 – 可手动初始化为nullptr 或 NULL指针释放后之后未置空 – 可手动初始化为null..._cout <<
定义和用法onchange 事件会在域的内容改变时发生。语法onchange="SomeJavaScriptCode"参数描述SomeJavaScriptCode必需。规定该事件发生时执行的 JavaScript。支持该事件的 HTML 标签:<input type="text">, <select>,...
12月9日,由京东方牵头的一份总投资超过100亿元的硅产业基地项目合作意向书在国内签署,成为近两年中国半导体近万亿元投资项目中的一个。在中国半导体产业长期且大规模依赖进口的背景下,相关产业的发展受到国家有关部门的重视,但由于海外并购频频受到外国政府阻挠,自身半导体技术的研发便显得更加重要。在业内人士看来,中国半导体产业除了需要资金支持,更需要人才的培养。 万亿投资 这份10_芯迪半导体行业地位
字节与范围字节与范围换算:1个字节8位。如 1000 0000。 计算机中数值一律用二进制数来存储,用最高位表示符号。0为正,1为负,剩下的为数值的二进制值。存储可以加上UNSIGNED取消符号: 如 Tinyint UNSIGNED 。默认情况下都是有符号的。 所以存储范围也分为两类:无符号 1 1111111(二进制) = 255(十进制)有符号 1 1111111 (二进制) =
javascript之可编辑下拉框HTML里的select box只能下拉选择,是不可以编辑的,本范例实现了一个既可以编辑又可以下拉的select box,在很多项目中能够用到。看看效果图:如图可以实现编辑下拉框,实现既有文本框功能又有下拉框功能。就是input控件基础上添加可选项<input type="text" name="myText" value="Norway" selectBo..._js 下拉框可编辑
基于端口策略组的虚拟机网络连接H3C S1010V中定义的端口策略组是一组网络策略属性集,如VLAN、PVLAN、VEPA、链路聚合等。它允许为同一类型或级别的虚拟机定义相同的网络策略,然后通过VMware vCenter将策略组应用到虚拟机的虚拟网卡上。当策略组中的网络策略发生变化时,这些变化的网络策略能够立即生效,而无需重新启动虚拟机,保证了业务系统的连续性和高可用性。基于端口策略组的虚拟机网...
2019独角兽企业重金招聘Python工程师标准>>> ..._sonar 这对 java7 的
最近很多站长都被一个问题所困扰,那就是收录问题,我们都知道网站收录一直是SEO优化考核的重要标准之一,所以这个问题对我们的影响非常大。很大部分站长做网站收录都是用文章来做的,所以解决收录问题就是要提升文章收录,那文章要怎么做才能让我们的收录提升呢? 一、文章有规律更新。 百度蜘蛛是循序渐进的对网站进行考察,比较喜欢每天有规律更新内容的那些网站。绝大一部分新网站如果没有及时更新,百度蜘蛛后续就可能不来了,这样网站的收录就会非常不好。所以,网站文章的更新需要每天进行,养..._提高文章收录方法
VirtualData 引用 implementation 'com.licola:virtual:1.0.2'主要目的是辅助开发阶段的测试,不建议在发布版引用,所以一般应该这样配置 testImplementation 'com.licola:virtual:1.0.2'使用CollectionUserModel models = Virtu...
Windows中提供了一个MCIWnd窗口类,可以更加方便的在一个VC窗口中操作多媒体。 使用MCIWnd,源文件中需要包含头文件 vfw.h,在Project->Settings->Link->Object/libray module中加入库 vfw32.lib。 1、MCIWnd的创建 MCIWnd子窗口的创建可使用MCIWndCreate函数: H...
刷脸坐车、无人驾驶……这些看似科幻的场景,如今在银川的云轨上都已成为现实。2018年1月10日,一列全自动无人驾驶的比亚迪云轨,满载着来自全国各地的“乘客”从空中徐徐驶过,标志着中国首条实现无人驾驶的跨座式单轨线路正式通车运行,比亚迪银川云轨也就此成为全球首条搭载100%自主知识产权无人驾驶系统的跨座式单轨。 (比亚迪云轨可实现全自动无人驾驶) 全球首条搭载自主知识产权无人驾驶系统的跨座_比亚迪云轨打破了谁的技术垄断