当前位置: 首页 > 知识库问答 >
问题:

Android浓缩咖啡:无法解析符号AndroidJUnit4.class

邵兴庆
2023-03-14

我试图在新的Android项目中创建浓缩咖啡UI测试,但我面临以下问题。

如果我试图创建一个空的测试类:

import android.content.Intent;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;

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.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;


@RunWith(AndroidJUnit4.class)
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {

}

我总是收到以下错误消息:

cannot resolve symbol AndroidJUnit4.class

几乎所有导入的库都标记为未使用。

建筑gradle文件包含以下内容:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.some.thing.xxx"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    maven { url "https://jitpack.io" }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.android.gms:play-services:7.8.0'
    compile 'com.mcxiaoke.volley:library:1.0.18'
    compile 'com.orhanobut:logger:1.11'
    // App dependencies
    compile 'com.android.support:support-annotations:23.0.0'
    // TESTING DEPENDENCIES
    androidTestCompile 'com.android.support.test:runner:0.3'
    // Set this dependency to use JUnit 4 rules
    androidTestCompile 'com.android.support.test:rules:0.3'
    // Set this dependency to build and run Espresso tests
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
    // add this for intent mocking support
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2'
    // add this for webview testing support
    androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2'
    // Set this dependency to build and run UI Automator tests
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2'
}

如果我把这些设置放在我的其他测试项目上,它是有效的,所以我不知道会出什么问题?

我遵循了这个教程:”

http://www.vogella.com/tutorials/AndroidTestingEspresso/article.html

我试图通过以下SO问题来解决它:无法解决符号“AndroidJUnit4”

但是没有运气。

非常感谢您的建议。

共有3个答案

柴兴贤
2023-03-14

您收到该错误消息的原因可能是测试所在的文件夹与规范不匹配。该文件夹必须是src/androidTest/java。

看看这篇文章,它说。。。

运行仪表化单元测试要运行仪表化测试,请按照以下步骤操作:

通过单击工具栏中的“同步项目”,确保您的项目与Gradle同步。以以下方式之一运行测试:要运行单个测试,请打开“项目”窗口,然后右键单击测试并单击“运行”。要测试类中的所有方法,请在测试文件中的类或方法上单击鼠标右键,然后单击“运行”。要运行目录中的所有测试,请右键单击该目录并选择运行测试。Gradle的Android插件编译位于默认目录(src/androidTest/java/)中的插入指令的测试代码,构建测试APK和生产APK,在连接的设备或模拟器上安装这两个APK,并运行测试。Android Studio然后在运行窗口中显示检测测试执行的结果。

因此,各位,对于仪器测试,文件夹必须是(不要忘记案例)

src/androidTest/java

对于本地测试,文件夹必须是

src/test/java

然后,您可以将程序包文件夹与应用程序包匹配

希望,这对社区有帮助!

陶烨赫
2023-03-14

我通过手动导入以下内容来解决它,我认为它应该自动导入,但没有:

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
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;
卢光誉
2023-03-14

我也尝试过vogella的相同教程,遇到了很多问题。我首先遇到的一个问题是v23 libs和Espresso libs的注释版本之间的依赖冲突。

然后,我发现了另一个最近更新的教程从罗杰胡“UI测试与浓缩咖啡”。我注意到一句话,意式浓缩咖啡还不支持Marshmallow。

依赖项添加如下:

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2') {
    // Necessary if your app targets Marshmallow (since Espresso
    // hasn't moved to Marshmallow yet)
    exclude group: 'com.android.support', module: 'support-annotations'
}
androidTestCompile('com.android.support.test:runner:0.3') {
    // Necessary if your app targets Marshmallow (since the test runner
    // hasn't moved to Marshmallow yet)
    exclude group: 'com.android.support', module: 'support-annotations'
}

这解决了我的依赖冲突,我没有看到任何其他问题发生。

 类似资料:
  • 在Espresso中,应用程序启动,测试以以下代码开始:onView(withId(r.id.choosebooktitle)).perform(click()); 这会崩溃,因为显示器仍然显示启动屏幕,而chooseBookTitle只有在之后才可见。如何防止谷歌-浓缩咖啡会在它出现之前点击键? (我不想插入等待循环,而是保持事件驱动。在更糟糕的情况下,我回到Robotium)

  • 本文向大家介绍Android 设置意式浓缩咖啡,包括了Android 设置意式浓缩咖啡的使用技巧和注意事项,需要的朋友参考一下 示例 在build.gradle您的Android应用模块的文件中,添加下一个依赖项: 在文件中AndroidJUnitRunner为testInstrumentationRunner参数指定build.gradle。 此外,添加此依赖项以提供意图模拟支持 并将其添加为w

  • 在我的主要活动中,我有initUi函数,它将触发对webviewActivity的意图,在webviewActivity中,有一个FragWebView,其中加载了url。 以下是来自FragWebView的示例代码: 我从我的主要活动中传递打开webview的意图是: 请让我知道如何解决这个问题。 问候

  • 我不能进口浓缩咖啡套餐 这是我的应用程序分级文件 onView(with text(“hello world!”)).check(matches(issplayed())); 我是不是漏掉了什么?

  • 问题内容: 我正在尝试为我的应用添加loginfacebook。但是,当我添加执行此操作所需的存储库时。它导致了错误。AndroidJUnit4现在无法解析。 ExampleInstrumentedTest.java 这是我的build:gradle(app) 问题答案: 尝试 添加以下上面的依赖项部分

  • 我正在尝试为我的应用程序添加loginfacebook。但当我添加了一个存储库,这是做这件事所需要的。它导致了一个错误。AndroidJUnit4现在无法解析。 ExampleInstrumentedTest.java 这是我的构建:Gradle(应用程序)