版权声明:本文为博主原创文章,未经博主允许不得转载。 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 {
//开始测试
}
}