Android AndroidJUnitRunner 给出 'java.lang.ClassNotFoundException' 的概率
Android prob with AndroidJUnitRunner giving 'java.lang.ClassNotFoundException'
我是仪器测试的新手。我正在尝试使用 AndroidJUnitRunner 进行基本测试。这是我的 gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.kaushik.mycart.ui"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions.enabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
..........................
..........................
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
}
然后我添加了一个名为 'ProductListActivityTest' 的 class 来测试 AndroidJunitRunner。如下:
package com.kaushik.myredmart.ui;
// all includes
@RunWith(AndroidJUnit4.class)
public class ProductListActivityTest {
@Rule
public ActivityTestRule<ProductListActivity> rule = new ActivityTestRule<>(ProductListActivity.class);
@Test
public void ensureListViewIsPresent() throws Exception {
ProductListActivity activity = rule.getActivity();
View viewByIdw = activity.findViewById(R.id.productListView);
assertThat(viewByIdw,notNullValue());
assertThat(viewByIdw, instanceOf(RecyclerView.class));
RecyclerView productListView = (RecyclerView) viewByIdw;
RecyclerView.Adapter adapter = productRecyclerView.getAdapter();
assertThat(adapter, instanceOf(ProductAdapter.class));
}
}
我没有在 'androidTest' 中添加其他文件。我还想提一下,我的源代码中有 Application class 文件。现在每次我尝试 运行 测试时,都会出现以下错误:
Started running tests
Test running failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'
Empty test suite.
谁能帮我找出测试代码中的问题?
你运行你的考试怎么样?
如果您是从 Android Studio 进行的:
- 打开 运行 菜单 -> 编辑配置
- 添加新的 Android 测试配置
- 选择一个模块
添加特定的检测运行程序:
android.support.test.runner.AndroidJUnitRunner
从命令行通过 Gradle:
./gradlew connectedAndroidTest
我解决了这个问题。这是由于包名称的不同。我将所有包名称统一设置为 运行 。有用。谢谢大家的帮助。
我是仪器测试的新手。我正在尝试使用 AndroidJUnitRunner 进行基本测试。这是我的 gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.kaushik.mycart.ui"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions.enabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
..........................
..........................
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
}
然后我添加了一个名为 'ProductListActivityTest' 的 class 来测试 AndroidJunitRunner。如下:
package com.kaushik.myredmart.ui;
// all includes
@RunWith(AndroidJUnit4.class)
public class ProductListActivityTest {
@Rule
public ActivityTestRule<ProductListActivity> rule = new ActivityTestRule<>(ProductListActivity.class);
@Test
public void ensureListViewIsPresent() throws Exception {
ProductListActivity activity = rule.getActivity();
View viewByIdw = activity.findViewById(R.id.productListView);
assertThat(viewByIdw,notNullValue());
assertThat(viewByIdw, instanceOf(RecyclerView.class));
RecyclerView productListView = (RecyclerView) viewByIdw;
RecyclerView.Adapter adapter = productRecyclerView.getAdapter();
assertThat(adapter, instanceOf(ProductAdapter.class));
}
}
我没有在 'androidTest' 中添加其他文件。我还想提一下,我的源代码中有 Application class 文件。现在每次我尝试 运行 测试时,都会出现以下错误:
Started running tests
Test running failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'
Empty test suite.
谁能帮我找出测试代码中的问题?
你运行你的考试怎么样?
如果您是从 Android Studio 进行的:
- 打开 运行 菜单 -> 编辑配置
- 添加新的 Android 测试配置
- 选择一个模块
添加特定的检测运行程序:
android.support.test.runner.AndroidJUnitRunner
从命令行通过 Gradle:
./gradlew connectedAndroidTest
我解决了这个问题。这是由于包名称的不同。我将所有包名称统一设置为 运行 。有用。谢谢大家的帮助。