帐户:Mockito测试帐户

kgqe7b3p  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(140)

我正在使用Mockito为一个返回Account对象的方法编写单元测试。
我正在创建一个新帐户如下:

Private Account testAccount = new Account("name", "type");

代码没有崩溃,但我总是在调试时得到这个异常:
方法抛出了“java.lang.RuntimeException”异常。无法计算android.accounts.Account.toString()
testAccount.nametestAccount.type总是null
有人能告诉我,如果我做错了什么,或者如果有一个适当的方法来模拟它,并获得相同的帐户名称和类型定义在初始化时?

1cklez4t

1cklez4t1#

一个同事在工作中发现了这一点,我们必须为Account对象做反射,因为它的字段被定义为final,所以你必须这样做:

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");
xzv2uavs

xzv2uavs2#

我猜你正在运行单元测试。Account类只能在unittest运行时作为存根使用。如果您需要Account类,则必须在Android Emulator(仪器化测试)上运行测试。另一个选择是从Stub中模拟所有需要的方法。

相关问题