首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 单元测试和 UI 测试初步实践

它跟 @Rule 注解几乎相同,可以在所有方法开始前进行一些相关的初始调用操作。使用这个注解,可以在执行测试用例的时候加入特有的操作,而不影响原有用例代码,有效减少耦合程度。...,这里做一个初始的操作,主要是 Mockito 框架的初始及 presenter 的初始;@After 注解的方法会在执行测试用例之后执行,这里做一个 presenter 的 detach() 操作...这里根据之前的业务代码逻辑: 环境初始:由于 NewsPresenter 的业务逻辑中是需要 DataManager 返回一个 NewsResultBean 实例才能进行后续的操作,而 mock 的话只能返回一个空对象...newsDetailActivityActivityTestRule 并用 @Rule 注解,newsDetailActivityActivityTestRule 是 ActivityTestRule 的实例对象...#launchActivity(intent) 方法启动待测试 Activity,做一个 IdlingResource 的绑定;@After 注解的方法会在执行测试用例之后执行,这里做一个 IdlingResource

2K10

Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

onCreate(Bundle savedInstanceState){ 此类是水果详情页,通过intent获得来自水果卡片列表页传来的数据(水果名字和图片id); 实例诸对象...intent.getStringExtra(FRUIT_NAME); int fruitImageId = intent.getIntExtra(FRUIT_IMAGE_ID, 0); //实例诸对象...而这个时候向下拖动水果内容详情,就会执行一个完全相反的动画过程。最终恢复刚刚点进来的样子。 ---- 那个这里的话其实有个小尴尬,再次强调注意命名规范的重要性了。。。...将刚刚写错的地方——实例使用的id改正一下即可: ImageView fruitImageView = (ImageView) findViewById(R.id.fruit_image_view);...因为Android5.0之前的系统无法指定状态栏的颜色,因此这里什么都不用做就可以了。

2.2K40
您找到你想要的搜索结果了吗?
是的
没有找到

面试被问:运行一个HelloWorld程序JVM都经历了什么

虚拟机规范严格要求有且仅有5种情况必须立即对进行“初始” 遇到new,getstatic,putstatic或invokestatic这四条字节码指令的时候,且没有被初始过 使用new实例对象的时候...使用java.lang.reflect包的方法对进行反射调用的时候,如果这个没有进行过初始 当初始一个,发现其父还没有进行初始,需要先触发父的初始 当虚拟机启动时,用户需要指定一个要执行的主...(是变量即static变量,不是实例变量,实例变量将会在对象实例化时随着对象一起分配在java堆中)。...,存放于构造器()方法中,所以把value赋值为123的动作将在初始阶段才会执行。...,编译器可以不为这个生成()方法 接口中不能使用静态语句块,但仍然有变量初始的赋值操作,因此接口与一样都会生成()方法,但是接口和不同的是,执行接口的()方法不需要先执行父接口的()方法。

61010

Java魔法堂:加载机制入了个门

执行初始阶段时,会创建一个自己的实例,在创建过程中会创建一个ExtClassLoader(扩展加载器)实例、一个AppClassLoader(系统加载器)实例,并将AppClassLoader...在执行链接阶段的解析子阶段时,会对符号引用进行符号引用验证,验证包括以下等内容:     a....准备(Preparation)     在方法区为变量分配内存空间,初始化为0。示例如下: // 经过准备阶段后,value变量将存储在方法区中,值为0。123的赋值操作将在初始阶段进行。...C所实现的父中是否有匹配的,若失败则从下往上递归搜索C所实现的接口中是否有匹配的(若成功说明C是一个抽象抛出`java.lang.AbstractMethodError`),若失败则抛出`java.lang.NoSuchMethodError...因此若在``执行耗时的操作则会阻塞其他线程的执行。   主动引用     JVM规范规定以下5种情况,则必须执行初始(加载、链接自然会在之前进入执行状态)        1.

91170

深入理解Java加载机制-连接

验证阶段大体会有4个阶段的验证: 文件格式验证 元数据格式验证 字节码验证 符号引用验证 1.1 文件格式验证 由于我们的字节码文件来源多样,因此我们需要对其进行验证,验证的方向主要由以下几个方面:...、字段、方法的访问性是否可以被当前访问 符号验证如果无法通过,将会抛出java.lang.IncompatibleClassChangeError异常的子类,如java.lang.IllegalAccessError...准备 准备阶段是为变量(static)设置内存分配初始值的阶段,这里强调以下两点: 只是变量,不包含实例变量,实例变量会在对象实例的时候分配到堆上,但变量(变量内存)都会在方法区(元数据)中分配内存...虚拟机要求在执行以下16个命令之前必须对所使用的符号引用进行解析: anewarray checkcast getfield getstatic instanceof invokedynamic invokeinterface...本期加载的连接阶段就介绍到这,下期我们会讲解加载的初始阶段,我们下期再见!!!

48010

虚拟机加载机制

常见的场景为:new关键字实例对象、读取或设置一个的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)的时候、以及调用一个的静态方法的时候。        ...4).当虚拟机启动时,用户需要指定一个要执行的主(包含main()方法的那个),虚拟机会先初始这个主。    ...然后再Java堆中实例一个java.lang.Class的对象,这个对象将作为程序访问方法区中的这些类型数据的外部接口。...3.准备     准备阶段是正式为变量分配内存设置变量初始值得阶段,这些内存都将在方法区中进行分配。...5.初始    直到初始才真正开始执行中定义的Java程序代码。初始阶段是执行的构造器()方法的过程。

46010

Java的栈帧和动态链接是什么?

JVM(Java Virtual Machine,Java虚拟机)主要包含以下几个组成部分: 加载器(Class Loader):负责加载字节码文件到内存,将.class文件中的信息加载到JVM中,...运行时数据区(Runtime Data Area):JVM的核心内存空间结构模型,主要包括以下子区域: 方法区(Method Area):用于存储虚拟机加载的信息、常量、静态变量,以及即时编译器编译后的代码等数据...堆(Heap):存储Java程序创建的实例(对象引用)。这是所有线程共享的内存区域,用于存放对象实例。...执行引擎(Execution Engine):对JVM指令进行解析,翻译成机器码,然后提交到操作系统中执行。它负责读取JVM指令驱动其执行。...如果符号引用无法进行解析,那么将会抛出一个异常,比如常见的java.lang.NoClassDefFoundError或java.lang.NoSuchFieldError、java.lang.NoSuchMethodError

22610

JVM 系列(6) —— JVM 加载机制

加载机制 Java 虚拟机把描述的数据从 class 文件加载到内存,对数据进行校验,转换解析和初始,最终形成可以被虚拟机直接使用。...Java 虚拟机规定有且只有以下 6 中情况必须立即对进行初始: 遇到 new、getstatic、putstatic、或 invokestatic 者四条字节码指令时,如果类型没有初始,则需要先触发其初始阶段...否则,宣告方法查找失败,抛出java.lang.NoSuchMethodError异常。 初始 初始阶段就是执行构造器 () 方法的过程。...在初始阶段,Java 虚拟机真正开始执行中编写的 Java 程序代码,将主导权移交给应用程序。在初始阶段,虚拟机会根据程序员通过程序编码指定的主观计划去初始变量和其他资源。...,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的)时,子加载器才会尝试自己去完成加载。

38630

java执行和停止Logcat命令及多线程实现

本人在使用UiAutomator的时候,想多写一个自动收集手机log的方法,使用runtime执行了adb logcat的方法,但是一直找不到好的方法结束这个线程,网上说有kill pid的,但是这个操作起来略微麻烦了...Runtime.getRuntime().exec("cmd /c " + cmd); } // 正确输出流 InputStream input = p.getInputStream();// 创建实例输入字节流...reader依赖于input,应先关闭 input.close(); // 错误输出流 InputStream errorInput = p.getErrorStream();// 创建实例输入字节流...Runtime.getRuntime().exec("cmd /c " + cmd); } // 正确输出流 InputStream input = p.getInputStream();// 创建实例输入字节流...依赖于input,应先关闭 input.close(); // 错误输出流 InputStream errorInput = p.getErrorStream();// 创建实例输入字节流

1.6K31

Android工程使用org.apache.commons.codec(commons-codec)库,运行时提示Base64.encodeBase64URLSafeString“java.lang.

我也下了这个库,放在我自己的项目中,替换了原来的Base64实现。而稍后在我进行单元测试的时候出问题了。...这会导致后加载的同一名称的包无效(无法加载覆盖)。所以我在运行时就找不到这个方法了。 解决方法? 没办法。Java的加载安全机制决定了我们没办法使用后加载的。..., 和我们老板手下有一个干活最卖力的员工名字一模一样,只是这个黑客里边竟然有格式硬盘的代码,我们的小兵Classloader 不明就里,就把 这个黑客给先装载了,也执行了, 最后的结果,唉,很惨的...Android内部已经加载过同名的旧库,导致项目中引用的库无法加载,而旧库的Base64又没有这个方法。...换一个库,使用Android自带的Base64方法,加上Base64.URL_SAFE标记位。

4.9K20

Java虚拟机--加载机制

虚拟机把的数据从class文件加载到内存,对class文件中的数据进行校验、转换、解析、初始等操作后,最终形成可以被虚拟机识别使用的过程就叫做“虚拟机的加载”。...如果无法通过符号引用验证,那么就会抛出异常,我们在编写程序时,经常会遇到java.lang.IllegalAccessError、java.lang.NoSuchFieldError、java.lang.NoSuchMethodError...在Java虚拟机规范中,如果有以下几种情况时必须立即对进行“初始”操作: (1)遇到new、getstatic、putstatic或invokestatic这四条字节码指令时,如果类没有进行过初始...生成这四条指令的最常见的Java代码场景是:使用new关键字实例对象的时候;读取或设置一个的静态字段(被final修饰除外)的时候;调用一个的静态方法的时候。...image 此外,虚拟机会保证构造器在多线程环境中被正确执行,如果有多个线程同时去初始一个,那么只会有一个线程去执行该类的构造器,其他线程都需要阻塞的等待。

61570

【进阶之路】深入理解Java虚拟机的加载机制(长文)

在准备阶段进行内存分配的仅包括变量(静态变量),而不包括实例变量。实例变量将会在对象实例的阶段随着对象一起分配在java堆中。...public static int value = 1; 类似于这种情况,在准备阶段后依然是0而不是1,因为这时候尚未执行任何Java方法,将value赋值必须等到的初始阶段才会被执行。...在初始阶段,Java虚拟机才真正开始执行中编写的Java程序代码。...6、当虚拟机启动时,用户需要指定一个要执行的包含 main 方法的主,虚拟机会初始这个主。 除此之外,其他方式都无法触发的初始,我们可以通过子类引用父的静态字段来测试。...这段代码执行后,并没有触发Father的初始,而是由虚拟机自生成了一个继承与Object的子类,这个代表了一个一维数组。

33210

JAVA系列之类加载机制详解

以下是举例说明加载过程: 二、生命周期 的生命周期包括:加载、验证、准备、解析、初始、使用、卸载7个阶段。...3、准备 为的静态变量分配内存,初始默认值,这些内存是在方法区中分配,需要注意以下几点: 此处内存分配的变量仅包含变量(static),而不包括实例变量,实例变量会随着对象实例被分配在java...5、初始的静态变量赋予正确的初始值,JVM负责对进行初始,主要对变量进行初始。初始阶段是执行构造器()方法的过程。...接口与不同的是,接口不需要先执行的()方法,只有父接口定义的变量使用时,父接口才会被初始。另外接口的实现也不会先执行接口的()方法。...()方法和()方法区别: 执行时机不同:init方法是对象构造器方法,在new一个对象调用该对象的constructor方法时才会执行

27140

常见的几种RuntimeException

是全部错误的基,用于标识严重的程序执行问题。这些问题通常描写叙述一些不应被应用程序捕获的反常情况。 java.lang.ExceptionInInitializerError 初始程序错误。...一般在改动了应用中的某些的声明定义而没有对整个应用又一次编译而直接执行的情况下,easy引发该错误。 java.lang.InstantiationError 实例错误。...java.lang.NoClassDefFoundError 未找到定义错误。当Java虚拟机或者装载器试图实例某个,而找不到该类的定义时抛出该错误。...当应用试图通过反射方式创建某个实例、訪问该类属性、调用该类方法,而当时又无法訪问的、属性的、方法的或构造方法的定义时抛出该异常。...java.lang.InstantiationException 实例异常。当试图通过newInstance()方法创建某个实例,而该类是一个抽象或接口时,抛出该异常。

86610

实习杂记(30):虚拟机的加载机制(1)

实例最后的解析结果是REF_getStatic,REF_pubstatic,REF_invokeStatic的方法句柄,并且这个方法所对应的没有经过初始,则需要先触发对应的的加载和初始 java...第三个阶段, 准备阶段  是正式为  变量 分配内存设置  变量 初始值的阶段,这些变量所使用的内存都将在方法区中进行分配 这个阶段中的变量指的是  static 变量,不包括实例变量, 实例变量的内存分配将会在对象的实例化时随着对象一起分配在...如果解析失败,抛出异常:java.lang.NoSuchMethodError 五)、初始。...()方法不需要先执行父接口的()方法, 只有当父接口中定义的变量使用时,父接口才会初始,另外,接口的实现在初始化时也一样不会执行接口的()方法, 6....虚拟机会保证一个的()方法在多线程环境中被正确的加锁,同步,如果多个线程同时去初始一个,那么只会有一个线程去执行这个的()方法,其他的线程都需要阻塞等待,直到活动线程执行

46730

JVM加载机制

概述 虚拟机把描述的数据从CLass文件加载到内存,对数据进行校验,解析和初始,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制(懒加载)。...…… 2.2 准备 为变量分配内存设置变量的初始值,这些变量使用的内存都将在方法区中进行分配。...参考类型和值 有三种reference 类型:类型,数组类型和接口类型。它们的值分别是对动态创建的实例,数组或实例或实现接口的数组的引用。...; 当初始一个的时候,如果发现其父还没有进行过初始,则需要先触发其父的初始; 当虚拟机启动时,用户需要制定一个需要执行的主,即:包含main方法的,虚拟机会先初始这个。...Fantj boss静态方法初始 说明了调用静态方法没有对进行实例,所以静态加载会被初始

52630

加载机制

加载机制 Java虚拟机把描述的数据从Class文件加载到内存,对数据进行校验、转换解析和初始,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的加载机制。...…… 符号引用验证的主要目的是确保解析行为能正常执行,如果无法通过符号引用验证,Java虚拟机将会抛出一个java.lang.IncompatibleClassChangeError的子类异常,典型的如...这时候进行内存分配的仅包括变量,而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配在Java堆中。...(即在虚拟机视角中的实例构造器()方法)不同,它不需要显式地调用父构造器,Java虚拟机会保证在子类的()方法执行前,父的()方法已经执行完毕。...当初始的时候,如果发现其父还没有进行过初始,则需要先触发其父的初始。 当虚拟机启动时,用户需要指定一个要执行的主(包含main()方法的那个),虚拟机会先初始这个主

61720

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券