运行 Android Studio 中的仪器测试,无需模拟用户操作
Running an instrumented test in Android Studio without simulating user actions
我写了一些操作 MotionEvent 实例的代码,想为它写一个单元测试。
单元测试只需要验证我的操作;它不需要模拟任何用户操作。
我知道它需要一个仪器测试才能使用 MotionEvent 的方法;我需要实际的方法,而不是任何模拟。
我在目录 src/androidTest/... 中定义了一个插桩测试;然而,它仍然抛出异常
java.lang.RuntimeException: Method obtain in android.view.MotionEvent not mocked.
我的模块的 build.gradle 文件包含以下条目:
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
我测试的导入class如下:
import android.view.MotionEvent;
import org.junit.Test;
import static org.junit.Assert.*;
我怎样才能运行这个测试?
我的错误如下。
我最初认为本地单元测试就足够了,因为不涉及用户操作。
事实证明这是错误的:本地单元测试无法访问 Android 方法。
我将包含测试的文件移动到为仪器测试指定的位置,/src/androidTest/java/,但没有更改文件;这可以在我的导入中看到。
出于这个原因,它仍然 运行 作为本地非仪器测试。
意识到之后,我将文件更改为模仿 Android studio 创建的 ExampleInstrumentedTest 以及我的项目。我还删除了运行配置,它仍然是本地测试。
之后Android工作室提示我创建一个新的运行配置,测试运行成功。
我写了一些操作 MotionEvent 实例的代码,想为它写一个单元测试。
单元测试只需要验证我的操作;它不需要模拟任何用户操作。
我知道它需要一个仪器测试才能使用 MotionEvent 的方法;我需要实际的方法,而不是任何模拟。
我在目录 src/androidTest/... 中定义了一个插桩测试;然而,它仍然抛出异常
java.lang.RuntimeException: Method obtain in android.view.MotionEvent not mocked.
我的模块的 build.gradle 文件包含以下条目:
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
我测试的导入class如下:
import android.view.MotionEvent;
import org.junit.Test;
import static org.junit.Assert.*;
我怎样才能运行这个测试?
我的错误如下。
我最初认为本地单元测试就足够了,因为不涉及用户操作。
事实证明这是错误的:本地单元测试无法访问 Android 方法。
我将包含测试的文件移动到为仪器测试指定的位置,/src/androidTest/java/,但没有更改文件;这可以在我的导入中看到。
出于这个原因,它仍然 运行 作为本地非仪器测试。
意识到之后,我将文件更改为模仿 Android studio 创建的 ExampleInstrumentedTest 以及我的项目。我还删除了运行配置,它仍然是本地测试。
之后Android工作室提示我创建一个新的运行配置,测试运行成功。