Android Studio 单元测试支持对比 robolectric
Android Studio unit testing support vs robolectric
到目前为止,我使用 robolectric 单元测试和 JUnit 4.x 来测试我的业务逻辑。在上一版本 Android Studio 1.1.0 中宣布了 native support 单元测试 junit:4.+
。
我应该拒绝使用 robolectric 吗? robolectric 有一些我可能不知道的独特优势吗?
至于我用AndroidStudio原生测试更方便更简单。在 robolectric 中,测试结果存储在 html 文件中,可以在浏览器中显示(这对我来说不方便)。原生AndroidStudio测试结果显示在运行输出window,如果某些测试失败,我们可以通过点击输出中的错误轻松打开这行代码window.
没有理由不能同时使用两者。 Robolectric 的优点是您可以在需要时针对实际 Android 行为进行测试。 Plain JUnit 只会让您测试不与 Android.
交互的代码部分
这样您就可以在 Android Studio 中查看 robolectric 测试的结果以及普通的 JUnit 4.x 测试
如果您使用的是 gradle,robolectric example github repo 有一个如何操作的示例。
我目前正在迁移一些应用程序以使用这种方法
以下是build.gradle
的相关部分
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
dependencies {
testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-core:1.1'
testCompile 'org.hamcrest:hamcrest-library:1.1'
testCompile 'org.hamcrest:hamcrest-integration:1.1'
testCompile('org.robolectric:robolectric:2.4') {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}
}
测试类不需要任何修改
到目前为止,我使用 robolectric 单元测试和 JUnit 4.x 来测试我的业务逻辑。在上一版本 Android Studio 1.1.0 中宣布了 native support 单元测试 junit:4.+
。
我应该拒绝使用 robolectric 吗? robolectric 有一些我可能不知道的独特优势吗?
至于我用AndroidStudio原生测试更方便更简单。在 robolectric 中,测试结果存储在 html 文件中,可以在浏览器中显示(这对我来说不方便)。原生AndroidStudio测试结果显示在运行输出window,如果某些测试失败,我们可以通过点击输出中的错误轻松打开这行代码window.
没有理由不能同时使用两者。 Robolectric 的优点是您可以在需要时针对实际 Android 行为进行测试。 Plain JUnit 只会让您测试不与 Android.
交互的代码部分这样您就可以在 Android Studio 中查看 robolectric 测试的结果以及普通的 JUnit 4.x 测试
如果您使用的是 gradle,robolectric example github repo 有一个如何操作的示例。
我目前正在迁移一些应用程序以使用这种方法
以下是build.gradle
的相关部分buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
dependencies {
testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-core:1.1'
testCompile 'org.hamcrest:hamcrest-library:1.1'
testCompile 'org.hamcrest:hamcrest-integration:1.1'
testCompile('org.robolectric:robolectric:2.4') {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}
}
测试类不需要任何修改