一 单元测试方法
1.1 添加单元测试依赖包
在程序模块下面的 build.gradle 中需要引入的依赖包: 一般 Androidstudio 新建项目就会自动生成
testImplementation - 引入的依赖是 java unit 单元测试, 是运行在当前电脑的 jvm 上的单元测试;
androidTestImplementation - 引入的依赖是 Android 单元测试, 是运行在 Android 环境的单元测试.
1.2 添加测试代码目录
如果 AndroidStudio 当前项目视图为 Android, 需要切换为 Project 视图, 在程序模块下面的 src 目录下添加 androidTest/java(Android 单元测试, 运行在 Android 环境的单元测试) 和 test/java(JUnit 单元测试, 运行在当前电脑的 jvm 上的单元测试), 然后在里面添加包名和测试类.
- androidTest/java(Android 单元测试, 运行在当前电脑的 jvm 上的单元测试, 执行测试的时候需要 Android 连接设备, 速度比较慢, 适合需要调用 Android API 的单元测试)
- test/java(JUnit 单元测试, 用来放不需要 Android 依赖的单元测试类, 运行在当前电脑的 jvm 上的单元测试, 速度快, 适合只是对 java 代码功能进行单元测试)
1.3 添加单元测试类
1.3.1 手动编写单元测试类
1.3.1.1 androidTest 测试类
androidTest 测试类适用于需要依赖 Android API 的单元测试, 需要连接 Android 设备才能进行测试. 新建的 androidTest java 类需要添加 @RunWith(AndroidJUnit4.class) 注解, 类的方法如果是测试入口方法需要添加 @Test 注解.
示例代码: 路径 App\src\androidTest\java\com\example\itandroid_1
- public class MainActivityTest {
- private Context mTargetContext;
- @Before
- public void setUP() throws Exception {
- mTargetContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
- }
- @Test
- public void onCreate() {
- try {
- ApplicationInfo applicationInfo = mTargetContext.getPackageManager().getApplicationInfo(mTargetContext.getPackageName(), PackageManager.GET_META_DATA);
- Bundle metaData = applicationInfo.metaData;
- String data = metaData.getString("com.panzq.Androidtest");
- assertEquals("123456", data);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
1.3.1.2 test 测试类
test 测试类适用于纯 java 的单元测试, 运行于当前设备的 jvm 环境中, 无需 Android 设备即可测试. 新建 test java 类, 类的方法如果是测试入口方法需要添加 @Test 注解.
代码示例: 路径 App\src\test\java\com\example\itandroid_1
- public class TestUtil {
- @Before
- public void setUp() throws Exception {
- }
- @Test
- public void isEmpty() {
- assertEquals(true, TextUtils.isEmpty(""));
- }
- }
1.3.1.3 测试类中的 setUp 方法
在测试类中的 setUp 方法, 可以在启动测试前进行一些初始化, 比如测试类中的变量等初始化, 这个方法需要添加 @Before 注解.
说明:
上面的示例代码中可以直接使用 assertEquals, 是因为使用了静态 import 方法引入了相应的包 (import static org.junit.Assert.*;)
根据测试的功能合理使用 androidTest 和 test, 提高单元测试效率.
2.2 自动生成测试类和测试方法
上面介绍的是手动添加测试类和测试方法, 以下介绍自动生成测试类和方法. 在项目源码中选中需要添加单元测试的类并打开, 在内容显示区域 "右键"->"Go To", 在弹出窗口中选择 "Test", 在弹出窗口中选择 "Create New Test ......"
在接下来弹出的对话框中, 勾选需要添加单元测试的方法, 在这里有个 "Generate" 通用方法生成, 可以选择 setUp/@Before(启动前调用, 可用于初始化) 和 tearDown/@After(结束后调用)
1.3 运行单元测试
1.3.1 运行单个测试方法
在测试方法题内部,"右键", 在弹出菜单中选择 "Run 方法名" 即可 (单元测试也可以使用断点调试和性能调试).
1.3.2 批量运行测试方法 (有些情况下可能会无法实现)
在终端使用 gradle 运行 test 任务, 可以执行所有的单元测试方法 (在 AndroidStudio 的 Terminal 运行 gradlew test, 在系统终端中运行 gradle -p 项目路径 test,gradle 没有配置环境变量, 需要绝对路径), 运行完成后, 就会运行所有的单元测试方法, 并且会显示结果, 如下图:
二 xml 语法
<?xml version ="1.0" encoding ="utf-8"?>
< 中国 >
< 北京 >
< 昌平 ></ 昌平 >
< 海淀 ></ 海淀 >
- </ 北京 >
- </ 中国 >
2.1 文档声明
<?xml version ="1.0" encoding ="utf-8"?> 文档声明必须写在第一行
保存的时候 xml 声明的编码要跟文件保存的编码保存一致, 如果不声明编码默认 utf-8
2.2 元素
< 中国 >
< 北京 >
< 昌平 ></ 昌平 >
< 海淀 ></ 海淀 >
- </ 北京 >
- </ 中国 >
2.3 属性
1. 属性要写在开始标签中
2. 属性的命名规则跟元素的命名规则一样
3. 属性一定要用引号包起来, 单引号双引号都可以
4. 属性的内容可以用子标签形式表示
2.4 注释
<!-- 注释 -->
CDATA 注释 可以包含大于小于号, 不会被解析器解析
<![CDATA[< 北京 ></ 北京 >]]>
2.5 特殊字符 转义
特殊字符 | 特殊字符 |
& | & |
< | < |
> | > |
" | " |
‘ | ' |
12_schema 约束 & 上午内容回顾
来源: http://www.bubuko.com/infodetail-3280736.html