- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当我尝试使用 Robolectric-rc2 并运行以下测试时,我得到了 no such android.content.res.Resources$NotFoundException: no such label com.yourapp.android:string/app_name。我尝试从运行自定义运行和使用构建 Activity 而不是安装 Activity 的 manifest.xml 文件中删除字符串。有任何想法吗?
@RunWith(TestRunner.class)
public class MainActivityTest {
private MainActivity mainActivity;
@Before
public void setUp() throws Exception {
mainActivity = Robolectric.setupActivity(MainActivity.class);
}
@Test
public void textTest() throws Exception {
TextView textView = (TextView) mainActivity.findViewById(R.id.daily_text);
assertEquals(textView, "com.yourapp.android");
assertThat(textView).isNotNull();
}}
configurations.all {
resolutionStrategy {
force 'org.hamcrest:hamcrest-core:1.3'
}
}
buildscript {
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
mavenCentral()
}
}
allprojects {
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
mavenCentral()
}
}
apply plugin: 'com.android.application'
apply plugin: 'org.robolectric'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
publishNonDefault true
defaultConfig {
applicationId "com.yourapp.android"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
multiDexEnabled = true
}
buildTypes {
debug {
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
testCoverageEnabled true
}
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
unitTest
app
def versionNumber = "1.0"
googleFree {
applicationId "com.yourapp.android"
versionName versionNumber + "-googleFree"
}
}
sourceSets {
unitTest {
java {
srcDir 'src/test/java'
}
assets {
srcDirs = ['src/test/assets']
}
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/ASL2.0'
exclude 'LICENSE.txt'
exclude 'LICENSE'
}
lintOptions {
abortOnError false
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
}
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
mavenLocal()
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.2.1'
// Espresso
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
// Unit testing dependencies
unitTestCompile('junit:junit:4.12') { // Prevent duplication conflicts
exclude module: 'hamcrest-core'
exclude module: 'hamcrest-library'
exclude module: 'hamcrest-integration'
}
unitTestCompile 'org.hamcrest:hamcrest-core:1.1'
unitTestCompile 'org.hamcrest:hamcrest-library:1.1'
unitTestCompile 'org.hamcrest:hamcrest-integration:1.1'
unitTestCompile 'com.squareup.assertj:assertj-android:1.0.0'
unitTestCompile('org.robolectric:robolectric:3.0-rc3') {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}
}
// Roboletric config
robolectric {
// Configure includes / excludes
include '**/*Test.class'
include '**/*Tests.class'
exclude '**/espresso/**/*.class'
maxHeapSize = '2048m'
jvmArgs '-XX:MaxPermSize=512m', '-XX:-UseSplitVerifier'
maxParallelForks = 4
forkEvery = 150
ignoreFailures false
afterTest { descriptor, result ->
println "Executing test for ${descriptor.name} with result: ${result.resultType}"
}
}
//end Roboletric config
// Jacoco config
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.7.1.201405082137"
}
// Edit covered scope if needed
// For my part I like having the coverage of both application and tests
def coverageSourceDirs = [
'../app/src'
]
task jacocoTestReport(type: JacocoReport, dependsOn: "testUnitTestDebug") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
classDirectories = fileTree(
dir: '../app/build/intermediates/classes',
excludes: ['**/R.class',
'**/R$*.class',
'**/*$ViewInjector*.*',
'**/BuildConfig.*',
'**/Manifest*.*']
)
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
executionData = files('../app/build/jacoco/testUnitTestDebug.exec')
reports {
xml.enabled = true
html.enabled = true
}
}
//end Jacoco config
// Start build aliases
...
]
def expandedTaskList = []
gradle.startParameter.taskNames.each {
expandedTaskList << (buildAliases[it] ? buildAliases[it] : it)
}
gradle.startParameter.taskNames = expandedTaskList.flatten()
// end of build aliases
tasks.withType(Test).whenTaskAdded {
it.systemProperty 'com.yourapp.android', android.defaultConfig.applicationId // your package name
}
最佳答案
我已经通过使用 Robolectrci 3.0rc3 修复了这个问题,并将以下声明添加到我的所有 unitTest 类中
@Config(constants = BuildConfig.class, sdk = 21)
@RunWith(RobolectricGradleTestRunner.class)
public class SomeRandomTest
{
...
}
关于android.content.res.Resources$NotFoundException : no such label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764546/
我正在使用 CustomMultiAutoCompleteTextView 引用 this 选择多个联系人在该代码中选择多个联系人,但我想显示在 toast 消息上选择的数字是什么。当为此单击按钮时,
我想改变我的 snackbar 的颜色 snackbarView.setBackgroundColor(ContextCompat.getColor(context, Color.RED)); 我得到
E/AndroidRuntime( 5751): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.exam
我已经用maven构建了我的项目所有构建成功并且 eclipse 属性生成也成功 但是当我在 Eclipse 4 中打开项目时,出现此错误 An internal error occurred dur
我刚刚学习了 Android 编码,这是一个简单的除法、乘法、加法和减法应用程序的源代码,该应用程序在我和我 friend 的 Android 手机上崩溃(在 Lenovo A390 和 Nexus
这是我的 .java 文件: package com.example.rohitkulkarni.readingfile; import android.os.Environment; import
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
我正在使用 zxing 解码二维码图像,但它总是返回 NotFoundException。在线解码器 http://zxing.org/w/decode.jspx扫描这些图像非常好,所以它应该能够在我
我注意到我的华为手机生产应用的许多崩溃报告与复数处理完全相关。其他手机没有这个问题只有华为才有。 所有复数形式都存在并且在其他设备上也能正常工作。 看来华为根本无法处理复数: android.cont
我有一个拥有超过 100.000 名用户的应用程序。但是在某些设备(~50)上我得到了一个奇怪的异常。堆栈跟踪显示,未找到可绘制对象。 这是堆栈跟踪: java.lang.RuntimeExcepti
我尝试使用 Zxing 来解码 Aztec 代码。 我使用来自 SO answer 的代码.这是其中的一部分: public static String readQRCode(String fileP
我正在创建一个应用程序,玩家可以在该应用程序中将自己的名字输入到编辑文本中。此信息被检索并通过 extras 发送到第二个 Activity 。每当我运行它时,我都会收到 Resources$NotF
我尝试构建 apk 的发布版本并在 Honor 5x (api 23) 上启动时出现错误: Caused by: android.view.InflateException: Binary XML f
我的一个应用在三星 S5(准确地说是 SM G900V)上崩溃了,但有以下异常(exception): android.content.res.Resources$NotFoundException:
我收到来自 android 市场的崩溃报告: android.content.res.Resources$NotFoundException: Resource ID #0x.... 我每周会收到大约
我有一个动态功能模块,它有自己的嵌套导航图。我还有一个动态功能模块,它只是一个 fragment 。如果您有一个带有自己导航图的动态功能模块,我知道您需要使用 包含动态标签。当我构建应用程序并将应用程
我的选项菜单中有一个麦克风按钮。当我单击它时,我希望它显示备用图像(红色麦克风)。 但是它不起作用。失败并出现 ResourcesNotFoundException。图像(png)肯定位于适当的 re
我正在循环显示近 4,000 张带有图像名称的图像。 这是我用来从可绘制文件夹获取图像的代码 for(int i=0; i
我试图扩展一个RelativeLayout对象并包含一个嵌入的SurfaceView对象,该对象使用/res/drawable文件夹中的png文件作为背景,但我在XML布局编辑器中不断收到错误。请参阅
崩溃发生在不同设备、不同 Android 版本的总用户中的 0.1%。 android.content.res.Resources$NotFoundException: at android.co
我是一名优秀的程序员,十分优秀!