这是我的测试:
@RunWith(AndroidJUnit4.class)
@MediumTest
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class);
@Test
public void buttonShouldBePresent(){
Intents.init();
onView(withId(R.id.button)).perform(click());
intended(hasComponent(SecondActivity.class.getName()));
}
}
我有这些依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:recyclerview-v7:24.1.1'
compile 'com.android.support:cardview-v7:24.1.1'
compile 'com.android.support:preference-v7:24.1.1'
compile 'com.android.support:design:24.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
}
我收到此错误:
Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (24.1.1) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
尝试使用早期版本的支持库(可以成功导入但不能使用TextInputEditText):
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
}
allprojects {
repositories {
jcenter()
}
configurations.all {
resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}
}
我可以导入早期版本,但有2个原因导致我无法使用早期版本。
我使用的是早期版本中没有的TextInputEditText
项目要求
如何在不降低支持库版本的情况下解决此问题?
答案 0 :(得分:2)
您可以使用以下方法强制测试中的注释库:
androidTestCompile 'com.android.support:support-annotations:24.1.1'
答案 1 :(得分:1)
从Espresso中排除support-annotations
。
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
您无法混合支持库版本(例如24.x.x所有内容与23.1.1 support-annotations
,请删除此内容:
configurations.all {
resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}
专业提示:
design
取决于appcompat-v7
和recyclerview-v7
,因此您无需指定它们。
答案 2 :(得分:0)
有两种解决方法可以解决它:
最简单的方法是在此行中依赖 include :
androidTestCompile'com.android.support:support-annotations:24.1.1'
并删除此内容:
configurations.all {
resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}
另一种方法是排除 android:support:annotations
libs:
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
module: 'support-annotations'
})
并删除此内容:
configurations.all {
resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}
Espresso
及其web
或intents
等所有工件都在版本23.1.1
及更早版本(espresso-contrib
)中使用Android支持库
请注意,最新版本的Android支持库已经24.2.0
,而不是24.1.1
。
希望它会有所帮助