gpt4 book ai didi

java - Html.fromHtml 不断抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 21:14:54 27 4
gpt4 key购买 nike

假设我有一个字符串,我已将其格式化为包含粗体字母。但在某些时候我需要能够删除格式。下面是我尝试过但不断收到 NullPointerException

这是我的方法

public String stripFormatting(String input){
return Html.fromHtml(input).toString();
}

这是一个电话

stripFormatting("<b>0</b>")

错误跟踪不多说了,就在这里

java.lang.NullPointerException
at com.mypkg.utils.MyClassTest.stripFormatting(MyClassTest.java:111)
at com.mypkg.utils.MyClassTest.testLessThan100_000(MyClassTest.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

最佳答案

我发现您正在尝试从单元测试运行此代码 - 调用 Html.fromHtml 将无法按预期工作,因为单元测试无法使用 Android 相关代码.

根据构建本地单元测试https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 模拟 Android 依赖项 -

By default, the Android Plug-in for Gradle executes your local unit tests against a modified version of the android.jar library, which does not contain any actual code. Instead, method calls to Android classes from your unit test throw an exception. This is to make sure you test only your code and do not depend on any particular behavior of the Android platform (that you have not explicitly mocked).

不过,这很容易修复 - 只需将测试从单元测试更改为仪器测试(即,在 androidTest 目录下,它实际上会使用完整的 android.jar 而不是像这样的 stub )用于单元测试)。运行起来会慢一点,但至少应该正确执行。

某些东西是可模拟的(例如,通过 Mockito 从 context 获取 getString,如上面的链接所述),但这不适用于静态方法。我怀疑如果您正在测试 HTML 剥离,您会想要实际测试它是否符合您的预期,因此仪器测试是最佳选择。

关于java - Html.fromHtml 不断抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413301/

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