【发布时间】:2020-02-22 13:39:53
【问题描述】:
我有一个 ViewModel,其中有一个方法具有以下代码行:
billDate.set(!TextUtils.isEmpty(SampleApp.getInstance().getAccountManager().getDueDate()) ?
String.format(SampleApp.getInstance().getApplicationContext().getString(R.string.due),
SampleApp.getInstance().getAccountManager().getBillingDueDate()) :
SampleApp.getInstance().getApplicationContext().getString(R.string.missing_due_date));
我有一个使用 Mockito 的测试类来测试 ViewModel 中的不同方法。但在这一行,NullPointerException 失败了:
String.format(SampleApp.getInstance().getApplicationContext().getString(R.string.due),
以下是日志:
java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Matcher.java:1283)
at java.util.regex.Matcher.reset(Matcher.java:309)
at java.util.regex.Matcher.<init>(Matcher.java:229)
at java.util.regex.Pattern.matcher(Pattern.java:1093)
at java.util.Formatter.parse(Formatter.java:2547)
at java.util.Formatter.format(Formatter.java:2501)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2940)
在运行测试用例时,我看到日志显示一些与 Pattern 相关的错误
有人可以建议,如何测试String.format() 方法?
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?
-
@GiorgioAntonioli 我已经粘贴了日志
-
可以添加相关的测试用例吗?
-
getString的默认实现返回null,可以mock或者使用StringProvider等封装接口。
-
请将测试用例与模拟类@Lavanya 一起发布
标签: android unit-testing junit mockito android-mvvm