gpt4 book ai didi

Android Espresso 测试 : Class not found: . ..空测试套件

转载 作者:太空狗 更新时间:2023-10-29 16:30:08 25 4
gpt4 key购买 nike

我正在尝试从这个例子中实现一些东西 - https://github.com/googlesamples/android-testing/tree/master/ui/espresso/BasicSample - 进入我的应用程序。

当我尝试执行简单的 Espresso 测试时,发生了这种情况:

"/Applications/Android Studio 2.2.3.app/Contents/jre/jdk/Contents/Home/bin/java" (...)

Process finished with exit code 1 Class not found: "com.faces_shop.app.MainActivityTest"Empty test suite.

(从 Android Studio 复制粘贴)

测试:

package com.faces_shop.app;

import android.support.test.filters.LargeTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

/**
* Created by AnonymizedForReview on 2017-01-12.
*/
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityTest {

public static final String STRING_TO_BE_TYPED = "Espresso";

@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
MainActivity.class);

@Test
public void changeText_sameActivity() {
// Type text and then press the button.
onView(withId(R.id.editFilter))
.perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard());
// onView(withId(R.id.changeTextBt)).perform(click());

// Check that the text was changed.
onView(withId(R.id.editFilter)).check(matches(withText(STRING_TO_BE_TYPED)));
}


}

应用的build.gradle:

apply plugin: 'com.android.application'

android {
// productFlavors {
// /* https://android-developers.googleblog.com/2015/12/leveraging-product-flavors-in-android.html */
// mock {
// applicationIdSuffix = ".mock"
// }
// prod
// }
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.faces_shop.app"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':FacesApi')

// androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
// exclude group: 'com.android.support', module: 'support-annotations'
// })
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile 'com.android.support:support-annotations:' + rootProject.supportLibVersion;
androidTestCompile 'com.android.support.test:runner:' + rootProject.runnerVersion;
androidTestCompile 'com.android.support.test:rules:' + rootProject.rulesVersion;
androidTestCompile 'com.android.support.test.espresso:espresso-core:' + rootProject.espressoVersion;

compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:recyclerview-v7:25.0.1'
testCompile 'junit:junit:4.12'
}

顶级build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
}
}

ext {
buildToolsVersion = "24.0.1"
supportLibVersion = "25.0.1"
runnerVersion = "0.5"
rulesVersion = "0.5"
espressoVersion = "2.2.2"
}

我做错了什么?

为什么看不到测试类?

它在 androidTest 中的这条路径中:.../Examples/DynamicList/FacesApp/src/androidTest/java/com/faces_shop/app/MainActivityTest.java

最佳答案

回答我自己的问题:

解决方案

事实证明,Android Studio 中有一个运行/调试配置,作为 “JUnit”,而它应该是 “Android 测试”

发生这种情况是因为,最初,测试类不小心位于 src/test/java,而不是 src/androidTest/java。因此,当我最初运行它时,运行/调试配置文件被创建为 JUnit,然后在后续尝试运行该类时被重用。我想它可以在 Android Studio 中得到改进,以根据类的当前状态确定运行/调试类型(不过没有提示 ;-))...

关于Android Espresso 测试 : Class not found: . ..空测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com