无法在 android (Android studio) 中测试受保护的方法
Posted
技术标签:
【中文标题】无法在 android (Android studio) 中测试受保护的方法【英文标题】:Can't test protected methods in android (Android studio) 【发布时间】:2014-12-24 01:47:39 【问题描述】:我在 android Studio 中有一个项目,主包名称为 com.game.android 在这个包中,我有一个类 GameMainActivity 和另一个包(名为“com.game.android.tests”),我的测试属于。在测试包中,我有 GameMainActivityTest ,它扩展了 ActivityInstrumentationTestCase2 。我想测试 GameMainActivity 类中受保护的方法,但无法查看这些方法。
据我所知,这是我应该在 Android 环境中设置测试的方式,但我想我可能在某个地方搞砸了。刚开始在 Android 中进行测试,所以目前我很无知。
【问题讨论】:
【参考方案1】:这只是一个关于范围的 java 事情。您的测试类设置得很好,但是修改后的“受保护”使这些方法无法从不属于“come.game.andriod”的类中访问。
如果您想直接测试这些方法中的代码,您需要将它们公开,或者创建以某种方式包装或调用受保护方法的新方法。您还可以在测试中对原始类进行子类化。
【讨论】:
这是不正确的。protected
使它们可用于子类。如果您不提供范围说明符,那就是“包保护”,这使得它们可用于同一包中的任何其他内容。使受包保护的方法可用于测试并确保测试类在同一个包中是相当普遍的做法。
没错,我没有准确地描述“受保护”。我想我只是想传达这样一个事实,即他的问题是无法从该包外部访问这些方法。
这就是问题所在。问题是我无法从其他地方运行测试。这是推荐的设置,除非我只测试公共方法(这很愚蠢),否则它不起作用。以上是关于无法在 android (Android studio) 中测试受保护的方法的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上将 getString 与 JSONObject 类一起使用时获取 null
android createTempFile 抛出权限被拒绝?
Android jetpack room+ViewModel+liveData 数据自动更新