gpt4 book ai didi

android - Robolectric:从 Assets 创建时,字体对象都是相同的

转载 作者:行者123 更新时间:2023-11-30 00:43:50 25 4
gpt4 key购买 nike

我有想要测试的自定义字体,但我不想使用 Android 测试,因为它们需要模拟器/设备来获取 AssetManager。所以我想使用 Robolectric,但我遇到了这个奇怪的问题(通过单元测试说明):

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 25, shadows = ShadowMultiDex.class)
public class CustomFontUnitTest {

@Test
public void typefacesShouldNotBeIdentical() throws Exception {
AssetManager assets = RuntimeEnvironment.application.getAssets();

Typeface avenirLight = Typeface.createFromAsset(assets, "fonts/avenir_lt_35_light.ttf");
Typeface avenirLightOblique = Typeface.createFromAsset(assets, "fonts/avenir_lt_35_light_oblique.ttf");

assertThat(avenirLight, not(equalTo(avenirLightOblique)));
}
}

我正在使用:

testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.robolectric:robolectric:3.2.2'
testCompile 'org.robolectric:shadows-multidex:3.2.2'

但是当我运行测试时,Typeface 对象是相同的:

java.lang.AssertionError: 
Expected: not <android.graphics.Typeface@3fd1>
but: was <android.graphics.Typeface@3fd1>
Expected :not <android.graphics.Typeface@3fd1>

有人知道我可能做错了什么吗?

最佳答案

我重构了我的代码,以便参数是字体名称 (String) 而不是实际的字体。现在我不再需要上下文或字体,可以编写普通的 jvm 单元测试:)

关于android - Robolectric:从 Assets 创建时,字体对象都是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112014/

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