我正在使用Mockito为返回帐户对象的方法编写单元测试。
我正在创建一个新帐户,如下所示:
Private Account testAccount = new Account("name", "type");
代码没有崩溃,但是当我调试时,我总是收到这个异常:
方法抛出"java.lang.RuntimeException"异常。无法评估 android.accounts.account.toString((
testAccount.name
和testAccount.type
总是null
.
有人可以告诉我我是否做错了什么,或者是否有适当的方法来模拟它并获得与初始化时定义的相同帐户名称和类型?
一位同事在工作中发现,我们必须对 Account 对象进行反射,因为它的字段是最终定义的,因此您必须执行以下操作:
Account account = new Account("MyAccount", "SomeType");
Field nameField = account.getClass().getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(account, "your value");
// Set whatever field you want to configure
Field typeField = account.getClass().getDeclaredField("type");
typeField.setAccessible(true);
typeField.set(account, "your value");
我猜你正在运行单元测试。帐户类仅在单元测试运行时用作存根。如果需要帐户类,则必须在 Android 模拟器上运行测试(插桩测试(。另一种选择是从存根中模拟您需要的所有方法。