kotlin学习笔记——单元测试

来源:互联网 发布:eclipse新建java工程 编辑:程序博客网 时间:2024/06/05 03:04

Kotlin学习笔记系列:http://blog.csdn.net/column/details/16696.html


Unit Test

kotlin也可以进行unit testing,如果项目中之前没有,那么需要做一些准备工作。

首先引入依赖
testCompile 'junit:junit:4.12'
这里注意不能是androidTestCompile,否则会报错Unresolved reference: xxxx

然后创建目录
在src目录下(main的同级)创建test/java目录,创建完会发现java目录的颜色自动为绿色,表示ide知道我们要使用unit testing模式。
在java目录下创建package(与项目主包名一致)

创建测试代码
在package下创建测试类编写代码即可,例如:
import org.junit.Test
import kotlin.test.assertTrue
class SimpleTest {
 @Test fun unitTestingWorks() {
     assertTrue(true)
 }
}
运行即可



Instrumentation Test

与unit testing一样,首先引入依赖
defaultConfig {    ...    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {    exclude group: 'com.android.support', module: 'support-annotations'})androidTestCompile ("com.android.support.test.espresso:espresso-contrib:2.2.1"){    exclude group: 'com.android.support', module: 'appcompat'    exclude group: 'com.android.support', module: 'support-v4'    exclude group: 'com.android.support', module: 'support-annotations'    exclude module: 'recyclerview-v7'}
exclude去掉一些依赖,防止重复引入
(contrib这个增加了一些额外功能,比如测试recyclerview)

然后创建目录,与unit一样,只不过根目录不是test而是androidTest,其他一样。

创建测试代码
import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.action.ViewActions.click
import android.support.test.espresso.assertion.ViewAssertions.matches
import android.support.test.espresso.contrib.RecyclerViewActions
import android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom
import android.support.test.espresso.matcher.ViewMatchers.withId
import android.support.test.rule.ActivityTestRule
import android.support.v7.widget.RecyclerView
import android.widget.TextView
import org.junit.Rule
import org.junit.Test

class SimpleActivityTest {

    @get:Rule
    val activity = ActivityTestRule(MainActivity::class.java)

    @Test fun testItem(){
        onView(withId(R.id.recyclerview)).perform(RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(0click()))
        onView(withId(R.id.textView)).check(matches(isAssignableFrom(TextView::class.java)))
    }
}
testitem中第一行代码是模拟点击recyclerview的第一个item。第二行是判断id是textview的组件是否是TextView。

原创粉丝点击