gpt4 book ai didi

unit-testing - Robolectric 4.0.1 不断在 buildActivity 上抛出 Resources$NotFoundException

转载 作者:行者123 更新时间:2023-12-05 09:15:02 24 4
gpt4 key购买 nike

我正在尝试使用 roboletric 构建非常简单的单元测试,但我无法创建事件。

我尝试了线程中的建议,但没有成功。

Resources$NotFoundException when calling Robolectric.buildActivity()

然而,我使用的是 4.0.1 版本。我想知道我是否需要做一些额外的设置。

这是我的gradle:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'

testImplementation 'androidx.test.espresso:espresso-core:3.1.0'
testImplementation 'androidx.test:core:1.0.0'
testImplementation 'androidx.test.ext:junit:1.0.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'
testImplementation 'org.robolectric:robolectric:4.0.1'
androidTestImplementation 'com.google.truth:truth:0.42'
testImplementation 'com.google.truth:truth:0.42'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
}

和我的测试程序:

@Config(sdk = 28, manifest=Config.NONE)
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {
private Activity activity;
@Before
public void setup() {

try {
// I tried these 3 lines of code and they all throw the exception :(

//activity = Robolectric.buildActivity(MainActivity.class).create().get();
//activity = Robolectric.setupActivity(MainActivity.class);
activity = Robolectric.buildActivity(MainActivity.class).create().start().resume().get();
}
catch (Exception e)
{
System.out.println("Keeps throwing exception!");
}
}
}

这里是输出:

[Robolectric] com.guitarv.robotest.MainActivityTest.validateTextViewContent: sdk=28; resources=legacy
[Robolectric] NOTICE: legacy resources mode is deprecated; see http://robolectric.org/migrating/#migrating-to-40
Keeps throwing exception!
Test:Sun Nov 11 06:21:59 PST 2018

我确实点击了该链接并将 gradle.properties 更新为:

org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableUnitTestBinaryResources=true

但是没有成功。我仍然无法创建事件,并且一直显示旧模式消息。

有什么线索是我做错了什么吗?

谢谢。

最佳答案

Robolectric 无法找到您应用的资源。

将此添加到您的build.gradle:

android {
testOptions {
unitTests.includeAndroidResources = true
}
}

将此添加到您的 gradle.properties(Android Studio 3.3+ 不需要):

android.enableUnitTestBinaryResources=true

关于unit-testing - Robolectric 4.0.1 不断在 buildActivity 上抛出 Resources$NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com