本地测试和Instrumentation测试练习

原创 2018年04月16日 13:57:50

本篇讲解两个练习, 本地单元测试和Instrumentation测试.

练习: 创建本地单元测试

在接下来的练习中你将学到在Android 工程中如何创建一个简单的JUnit 4测试.

准备

在Android Studio 中创建一个Android工程, 并在app/build.gradle文件中添加JUnit 4依赖(参考上文).

创建测试

在你的 app/src/test 目录下创建如下面所示两个测试方法来测试ConverterUtil类

package com.lulu.androidtestdemo.androiduit;

import org.junit.Test;

import static junit.framework.Assert.assertEquals;

/**
 * Created by zhanglulu on 2018/2/24.
 */

public class ConverterUtilTest {
    @Test
    public void testConvertFahrenheitToCelsius() {
        float actual = ConverterUtil.convertCelsiusToFahrenheit(100);
        // expected value is 212
        float expected = 212;
        // use this method because float is not precise
        assertEquals("Conversion from celsius to fahrenheit failed", expected, actual, 0.001);
    }

    @Test
    public void testConvertCelsiusToFahrenheit() {
        float actual = ConverterUtil.convertFahrenheitToCelsius(212);
        // expected value is 100
        float expected = 100;
        // use this method because float is not precise
        assertEquals("Conversion from celsius to fahrenheit failed", expected, actual, 0.001);
    }
}

运行单元测试

通过运行相应的测试方法来确保单元测试正确执行,它们应该成功执行.

练习: Instrumentation 测试

这个练习使用到了模拟框架Mockito.请回顾之前Mock系列文章.

创建需要测试的类

添加以下工具类:

package com.lulu.androidtestdemo.instrumentation;

import android.content.Context;
import java.io.FileOutputStream;

/**
 * Created by zhanglulu on 2018/2/24.
 */
public class WriteConfigurationUtil {
    public static void writeConfiguration(Context ctx ) {
        try (FileOutputStream openFileOutput =
                     ctx.openFileOutput( "config.txt", Context.MODE_PRIVATE);) {

            openFileOutput.write("This is a test1.".getBytes());
            openFileOutput.write("This is a test2.".getBytes());
        } catch (Exception e) {
            // not handled
        }
    }
}

创建一个新的单元测试

编写一个单元测试来验证: openFileOutput()只被调用了一次,write()方法被调用了两次.

package com.lulu.androidtestdemo.instrumentation;

import android.content.Context;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

import java.io.FileOutputStream;

import static org.junit.Assert.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;

/**
 * Created by zhanglulu on 2018/2/24.
 */
public class WriteConfigurationUtilTest {
    @Rule
    public MockitoRule rule = MockitoJUnit.rule();
    @Mock
    Context context;
    @Mock
    FileOutputStream fileOutputStream;
    @Test
    public void writeShouldWriteTwiceToFileSystem() {
        try {
            when(context.openFileOutput(anyString(), anyInt())).thenReturn(fileOutputStream);
            WriteConfigurationUtil.writeConfiguration(context);
            verify(context, times(1)).
                    openFileOutput(anyString(), anyInt());
            verify(fileOutputStream, atLeast(2)).write(any(byte[].class));

        } catch (Exception e) {
            e.printStackTrace();
            fail();
        }
    }
}

右击执行该测试.(测试执行通过)

敲行代码再睡觉

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013144863/article/details/79959710

测试

-
  • 1970年01月01日 08:00

单元测试instrumentation入门---eclipse

前言:
  • harvic880925
  • harvic880925
  • 2014-07-18 10:59:18
  • 4216

Android白盒测试之Instrumentation初探(一)

一、Instrumentation简介 Instrumentation是Android 测试的核心框架,可使用它进行Android应用的单元测试和自动化测试。Instrumentation可以在主程序...
  • yiwaChen
  • yiwaChen
  • 2016-09-07 23:34:30
  • 4593

Android 使用Instrumentation进行自动化测试

使用Instrumentation 进行代码的自动测试。
  • Mr_DV_BKHM
  • Mr_DV_BKHM
  • 2016-05-24 16:19:11
  • 387

Android自动化测试框架开发(三)Instrumentation测试框架

本篇开始将介绍几个重量级的测试框架,首先介绍的是Android最早推出的便于进行程序深入的,系统性的单元测试的框架–Instrumentation。Instrumentation从android2.3...
  • Missueverday
  • Missueverday
  • 2016-05-11 11:10:59
  • 1462

Instrumentation测试进阶练习

本篇文章主要讲解两个练习,如何测试Content Provider和Application 练习: 测试Content Provider 下面是一个Content Provider 的...
  • u013144863
  • u013144863
  • 2018-04-16 13:59:24
  • 70

Instrumentation安卓官方简介(个人认为是HighLevel抽象出来的最简洁明了的阐述)

官方连接:http://developer.android.com/tools/testing/testing_android.html中间Instrumentation段落 (百度出来的Instru...
  • zhubaitian
  • zhubaitian
  • 2014-09-26 12:45:49
  • 2832

Android Studio 单元测试(instrumentation)

之前写过一篇博文《Android下的Junit单元测试》,是基于Eclipse开发环境的,原文链接: http://blog.csdn.net/a78270528/article/details/46...
  • a78270528
  • a78270528
  • 2015-07-19 20:24:36
  • 14368

Android 自动化测试之——Instrumentation

前沿: 单元测试junit3,junit4等属于本地测试,无需链接android 模拟器或者真机。Instrumentation 不同于junit3,junit4需要至少连接一种外设(真机或者...
  • o279642707
  • o279642707
  • 2017-01-16 18:09:27
  • 808

AndroidStudio单元测试——instrumentation

前言:这几
  • harvic880925
  • harvic880925
  • 2014-07-23 10:59:36
  • 42880
收藏助手
不良信息举报
您举报文章:本地测试和Instrumentation测试练习
举报原因:
原因补充:

(最多只允许输入30个字)