构建本地单元测试

伴随JUnit中 TemporaryFolder @Rule 的出现,测试文件和目录变得简单了。

澳门新葡亰手机版,如果你的单元测试没有依赖或者只有Android上的简单依赖,你应该在本地开发机器上运行测试。
这种测试方法是高效的,因为它可以帮助您避免每次运行测试时将目标应用程序和单元测试代码加载到物理设备或模拟器上的开销。
因此,运行单元测试的执行时间大大减少。
使用这种方法,通常使用模拟框架(如Mockito)来实现任何依赖关系。

在 JUnit
中,规则(@Rule)可作为构造测试用具(fixture)时初始化方法和清理方法的替代和补充(在
JUnit
中,这2种方法分别通过以下注解标注:org.junit.Beforeorg.junit.Afterorg.junit.BeforeClass
org.junit.AfterClass
。而且规则的功能更加强大并且也更易于在项目和类之间共享。

配置测试环境

在您的Android
Studio项目中,必须将用于本地单元测试的源文件存储在module-name / src /
test / java /。 创建新项目时,此目录已存在。

您还需要为项目配置测试依赖关系,以使用JUnit 4框架提供的标准API。
如果您的测试需要与Android依赖关系交互,请包括Mockito库以简化本地单元测试。
要了解有关在本地单元测试中使用模拟对象的更多信息,请参阅下面的Mocking
Android dependencies。

在应用程序的顶级build.gradle文件中,您需要将这些库指定为依赖关系:

dependencies {
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
    // Optional -- Mockito framework
    testCompile 'org.mockito:mockito-core:1.10.19'
}

译者注:测试用具是指作为测试运行基准的一组对象所呈现的一个稳定状态。其目的是确保测试是运行在一个众所周知的、稳定的环境中的,以实现测试的可重复执行。准备输入数据、生成模拟对象(Mock)、将特定的数据加载到数据库、复制一组特定的文件等,这些都属于构造测试用具。

创建一个本地单元测试类

你的本地单元测试类应该写成一个JUnit 4测试类。
JUnit是Java最受欢迎和广泛使用的单元测试框架。 这个框架的最新版本,JUnit
4,允许你以比它的前任版本更清洁和更灵活的方式编写测试。
与以前的基于JUnit 3的Android单元测试的方法不同,使用JUnit
4,您不需要扩展junit.framework.TestCase类。
您也不需要在测试方法名称前加上’test’关键字,或者使用junit.framework或junit.extensions包中的任何类。

要创建基本的JUnit 4测试类,请创建一个包含一个或多个测试方法的Java类。
测试方法以@Test注释开始,包含练习和验证要测试的组件中的单个功能的代码。

以下示例显示如何实现本地单元测试类。
测试方法emailValidator_CorrectEmailSimple_ReturnsTrue验证被测应用程序中的isValidEmail()方法是否返回正确的结果。

以下示例显示如何实现本地单元测试类。
测试方法emailValidator_CorrectEmailSimple_ReturnsTrue验证被测应用程序中的isValidEmail()方法是否返回正确的结果。

import org.junit.Test;
import java.util.regex.Pattern;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class EmailValidatorTest {

    @Test
    public void emailValidator_CorrectEmailSimple_ReturnsTrue() {
        assertThat(EmailValidator.isValidEmail("name@email.com"), is(true));
    }
    ...
}

要测试应用程序中的组件是否返回预期结果,请使用junit.Assert方法执行验证检查(或断言),以便将受测试组件的状态与某些预期值进行比较。
为了使测试更可读,可以使用Hamcrest
matchers(例如is()和equalTo()方法)将返回的结果与预期结果进行匹配。