如果我将Mock值设为私有值,Mockito是否需要使用反射



假设我有一个测试类,里面有一些mock。Lint建议字段可以是私有的。我想知道,把它们保密有问题吗?我的一位同事认为,也许这会导致Mockito使用反思。这是真的吗?或者我可以安全地将它们标记为私有吗?

@Mock private Context context;

@Mock Context context;

官方的Android文档在Kotlin版本上是私有的,但在Java版本上没有(在撰写本问题时)。https://developer.android.com/training/testing/unit-testing/local-unit-tests#kotlin

我环顾四周,在谷歌上搜索了一下,但我不确定,因为我能找到的任何地方都没有明确提到它,有些参考文献是私人的,而另一些则没有。

在这两种情况下,测试运行良好,所需时间大致相同(10秒)。因此,我认为最好将其标记为私有,并删除lint错误。可能的不利因素是什么?

据我所知,反思与价值是否私人无关。似乎更多的是它是否能看到mock类中的方法。如果类中的这些方法是私有的,那么它将需要使用反射。

如果需要,可以将字段设为私有字段,反射也可以使用私有字段。

我个人会考虑最佳实践,并在需要时将变量作为getter和setter方法的私有变量。

Android中对反射的"限制"仅适用于在应用程序中的设备上运行的代码。单元测试不必遵守这一原则,因为它们是在计算机上运行的,不会出现在应用程序中。

我总是在测试类中使用私有属性,从未遇到过任何问题。

更新:查看源代码后,Mockito似乎使用反射来实例化@mmock属性,无论它们是私有的还是公共的。

相关内容

  • 没有找到相关文章