Gradle Android Studio没有';我不认识浓缩咖啡课
我正在用Gradle 1.11运行Android Studio 0.5.0。我正在尝试从安装Espresso library。由于某些原因,AS无法在项目同步后识别浓缩咖啡类。所以每次我尝试导入Gradle Android Studio没有';我不认识浓缩咖啡课,gradle,android-studio,android-espresso,Gradle,Android Studio,Android Espresso,我正在用Gradle 1.11运行Android Studio 0.5.0。我正在尝试从安装Espresso library。由于某些原因,AS无法在项目同步后识别浓缩咖啡类。所以每次我尝试导入import static com.google.android.apps.common.testing.ui.espresso.espresso.onView内部androidTest文件夹文件它将其标记为无效 这是我的身材。格雷德尔: apply plugin: 'android' android
import static com.google.android.apps.common.testing.ui.espresso.espresso.onView代码>内部androidTest
文件夹文件它将其标记为无效
这是我的身材。格雷德尔:
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'
}
}
外部图书馆:
您没有具体说明在哪个源文件中看到错误,但根据我的测试,我认为您试图从一个主要应用程序类(在src/main/java/中)访问Espresso类。如果是这样的话,那就行不通了,因为您已经通过依赖项include包含了Espresso,这使得它只能被您的测试类访问,而测试类必须在src/androidTest/java下。所以这基本上是Android Studio的一个bug(我猜)
参考:
解决方法(直到修复错误):
在gradle文件中添加重复提供的依赖项,如下所示:
dependencies {
// ...
provided 'com.jakewharton.espresso:espresso:1.1-r2'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
exclude group: 'com.squareup.dagger'
}
}
六个月后,这仍然是一个问题,原始响应者引用的bug已经被重新打开:并被赋予更高的优先级。我还无法让Android Studio识别浓缩咖啡类,使用“提供的”依赖范围对我来说无法解决这个问题。(使用AS 0.8.6和Gradle 0.12.2)这个问题让我抓狂。这似乎是Android Studio中的一个已知错误。在我的例子中,在我将父应用程序的构建类型从Release更改为Debug之后,它得到了解决。希望这对其他人有所帮助Espresso 2.0
最近,Espresso 2.0发布,使其成为Android支持库的一部分。这是我的
安装指南
有了这一点,他们也可以。在那里,您可以找到有关从头开始配置或更新现有2.0版浓缩咖啡配置的说明
其他提示
以上两个链接包含您需要的所有信息。如果没有,我在下面列出了一些常见的错误
将Android Studio升级至1.0*
从升级android Studio版本开始。您应该能够从稳定构建通道(=默认值)获得至少1.0。因此,只需使用菜单选项Android Studio检查更新…
要从最新频道获取最新信息,您还可以进入首选项,搜索更新并将频道更改为金丝雀频道
将Android支持库更新为v11+
Espresso从版本11开始就包含在支持库中,因此您必须至少获得该版本。使用Android SDK管理器检查更新。支持库位于底部的Extras树中
新的依赖项和命名空间
如果从较旧的espresso版本升级,则必须更新依赖项和名称空间。对于新项目,只需将它们添加到build.gradle
文件中的dependencies
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"
}
在您的运行配置中,将此用作检测运行程序(仅限完整类名):
示例测试用例
最后是一个示例测试用例。请注意,MainActivity
是您要测试的活动。测试本身是以测试开始的公共方法,如下面示例中的testlistgoesoferthefold
@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());
}
}
@LargeTest
公共类HelloWorldEspressoTest扩展了ActivityInstrumentationTestCase2{
公共HelloWorldEspressoTest(){
超级(MainActivity.class);
}
@凌驾
public void setUp()引发异常{
super.setUp();
getActivity();
}
public void testlist goesoverthefold(){
onView(带有文本(“Hello world”))。检查(isDisplayed());
}
}
有关编写测试的更多信息,请访问。根据
只测试一种生成类型,默认情况下它是调试生成类型
因此,请检查您是否正在使用debug build variant并重建应用程序。在其他构建类型上,所有androidTest依赖项都将不可见
如果需要测试当前生成类型,可以执行以下操作:
安卓{
...
testBuildType“暂存”
}我已经尝试了上面大家猜测的所有解决方案,但仍然得到了类not found错误
我想出了我的解决办法,它救了我一天。
因此,如果在Studio中打开项目文件夹左侧的“项目”选项卡并检查构建变体,您可以看到,您的项目设置为“单元测试”。您必须将其重新设置为Android Instrumentation Tests,并确保您的test.java文件处于
**在我的例子中,src\androidTest\java**androidstudio 1.5.1没有实现onView()
或onData()
方法。我只是静态导入了Espresso类及其所有方法
我在下面加了一行,一切都很顺利
import static android.support.test.espresso.Espresso.*;
您是否将instrumentTest文件夹重命名为androidTest?恕我直言,但我实际上尝试在androidTest文件夹类中访问它。此解决方法非常有用。我用的是r3版本的双倍浓缩咖啡,这个错误仍然存在。此外,无需创建androidTest
文件夹-我创建了test/java/…
,它就像一个魔咒一样工作;)自从gradle android插件版本1.1以来,aar依赖项不再有效。原因是它不允许提供aar dep
import static android.support.test.espresso.Espresso.*;