我正在使用Android Studio 0.5.0
运行Gradle 1.11
。我正在尝试从com.jakewharton.espresso:espresso:1.1-r2安装Espresso库。由于某些原因,AS在项目同步后无法识别Espresso类。因此,每次我尝试在import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView;
文件夹文件中导入androidTest
时,都会将其标记为无效。
这是我的build.gradle:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.0.2'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.squareup.dagger:dagger-compiler:1.2.1'
compile 'com.squareup.dagger:dagger:1.2.1'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
exclude group: 'com.squareup.dagger'
}
}
外部图书馆:
答案 0 :(得分:28)
所以这基本上是Android Studio的一个错误(我在猜测)。
参考:
解决方法(直到错误修复):
在您的gradle文件中添加重复提供的依赖项,如下所示:
dependencies {
// ...
provided 'com.jakewharton.espresso:espresso:1.1-r2'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
exclude group: 'com.squareup.dagger'
}
}
答案 1 :(得分:13)
这个问题让我抓狂。似乎它是Android Studio中的一个已知错误。就我而言,在我将父类应用程序的Build Type从Release更改为Debug之后,它就解决了。希望这可能对某人有帮助
答案 2 :(得分:11)
最近发布了 Espresso 2.0 ,使其成为 Android支持库的一部分。这是announced on the android dev blog。
他们也linked an updated setup guide。在那里,您可以找到从头开始配置或更新现有espresso配置2.0的说明。
更改是以上2个链接包含您需要的所有信息。如果不是,我列出了
下面的一些常见错误首先升级你的android Studio版本。您应该能够从稳定构建通道(=默认值)获得至少1.0。所以只需使用菜单选项 Android Studio > 检查更新...... 。
要获取最新信息,您还可以进入偏好设置,搜索更新并将频道更改为金丝雀频道。
Espresso已包含在版本11的支持库中,因此您必须至少获得该版本。使用 Android SDK管理器检查更新。支持库位于底部的 Extras 树中。
如果从较旧的espresso版本升级,则必须更新依赖项和命名空间。对于新项目,只需将其添加到dependencies
文件中的build.gradle
。
dependencies {
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
}
由于命名空间已更改,因此您必须更新所有导入:
android.support.test.espresso
请注意,使用静态导入更容易。 一些常用的导入作为示例:
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;
import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
对于断言使用hamcrest,再次使用一些示例:
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.startsWith;
import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.equalToIgnoringCase;
import static org.hamcrest.Matchers.equalToIgnoringWhiteSpace;
需要在defaultConfig中的build.gradle
文件和用于从Android Studio启动测试的运行配置中配置测试运行器。
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
在您的运行配置中,将其用作检测运行器(仅限完整的类名):
android.support.test.runner.AndroidJUnitRunner
一个完成的示例测试用例。请注意,MainActivity
是您想要测试的行为。测试本身是以测试开始的公共方法,如下例中的testListGoesOverTheFold
。
@LargeTest
public class HelloWorldEspressoTest extends ActivityInstrumentationTestCase2<MainActivity> {
public HelloWorldEspressoTest() {
super(MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testListGoesOverTheFold() {
onView(withText("Hello world")).check(isDisplayed());
}
}
有关编写测试的详细信息,请访问the espresso start guide。
答案 3 :(得分:4)
六个月后,这仍然是一个问题,原始响应者引用的错误已重新打开:https://code.google.com/p/android/issues/detail?id=66841并给予更高的优先级。我还没有能够让Android Studio识别Espresso类,并且使用“提供的”依赖项范围对我来说无法解决问题。 (使用AS 0.8.6和Gradle 0.12.2)
答案 4 :(得分:3)
根据http://tools.android.com/tech-docs/new-build-system/user-guide 只测试了一种构建类型,默认情况下是调试构建类型。
因此,请检查您是否正在使用调试版本变体并重建应用程序。在其他构建类型上,所有的androidTest依赖项都不可见。
如果您需要测试当前的构建类型,可以执行以下操作:
android { ... testBuildType&#34; staging&#34; }
答案 5 :(得分:3)
Android Studio 1.5.1在我的案例中没有实现onView()
或onData()
方法。我刚刚对Espresso类及其所有方法进行了静态导入。
我添加了以下内容,一切都运行良好。
import static android.support.test.espresso.Espresso.*;
答案 6 :(得分:1)
您没有具体说明您看到错误的源文件,但根据我的测试,我认为您正在尝试从一个主要的应用程序类访问Espresso类(在 src中) /主/ JAVA / 的)。如果是这样,那就行不通了,因为你已经通过androidTestCompile
依赖包含了Espresso,这使得它只能被你的测试类访问,测试类必须在 src / androidTest / java
答案 7 :(得分:0)
我已经尝试了上面提到的所有解决方案,并且仍然没有找到类错误。
我想出了我的解决方案,它节省了我的一天。 因此,如果您打开左侧的项目选项卡到Studio中的项目文件夹并检查构建变体,您可以看到,您的项目设置为单元测试< / strong>即可。您必须将其重新设置为Android Instrumentation Tests并确保您的test.java文件不足 ** SRC \ androidTest \ java中**