Android Studio中单元测试

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

合理利用单元测试,不仅可以保证软件开发的质量,而且可以大大提高工作效率。本文介绍Android Studio中单元测试相关内容和遇到的问题。

1.添加依赖(build.gradle

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
  • testImplementation:引入的依赖是Java Unit单元测试,是运行在当前电脑的jvm上的单元测试。

JUnit单元测试,用来放不需要Android依赖的单元测试类,运行在当前电脑的jvm上的单元测试,速度快,适合只是对java代码功能进行单元测试。

  • androidTestImplementation:引入的依赖是Android单元测试,是运行在Android环境的单元测试。

Android单元测试,运行在当前电脑的jvm上的单元测试,执行测试的时候需要Android连接设备,速度比较慢,适合需要调用Android api的单元测试。

 2.JUnit用法

可以静态import方法引入了相应的包(import static org.junit.Assert.*;)

Assert类中主要方法如下:

方法名 方法描述
assertEquals  断言传入的预期值与实际值是相等的
assertNotEquals     断言传入的预期值与实际值是不相等的
assertArrayEquals      断言传入的预期数组与实际数组是相等的
assertNull     断言传入的对象是为空
assertNotNull     断言传入的对象是不为空
assertTrue     断言条件为真
assertFalse      断言条件为假
assertSame     断言两个对象引用同一个对象,相当于“==”
assertNotSame     断言两个对象引用不同的对象,相当于“!=”
assertThat     断言实际值是否满足指定的条件


注意:上面的每一个方法,都有对应的重载方法,可以在前面加一个String类型的参数,表示如果断言失败时的提示。

JUnit中的常用注解:

注解名 含义
@Test 表示此方法为测试方法
@Before 在每个测试方法前执行,可做初始化操作
@After 在每个测试方法后执行,可做释放资源操作
@Ignore 忽略的测试方法
@BeforeClass 在类中所有方法前运行。此注解修饰的方法必须是static void
@AfterClass 在类中最后运行。此注解修饰的方法必须是static void
@RunWith 指定该测试类使用某个运行器
@Parameters 指定测试类的测试数据集合
@Rule 重新制定测试类中方法的行为
@FixMethodOrder 指定测试类中方法的执行顺序


执行顺序:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

3.报错问题

报错:Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ.

解决:在 build.gradle 添加

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}

dependencies {
    ...
}

4.实例

public class AndroidTest {

    @Before
    public void init() throws Exception {
      //初始化
    }

    @Test
    public void test() throws Exception {
      //开始测试
    }

}

猜你喜欢

转载自blog.csdn.net/qq_36347817/article/details/89349053