单元测试Android中的私有功能

时间:2012-01-12 11:09:30

标签: android unit-testing easymock

我们可以使用Android Mock对Android应用程序的私有函数和字段进行单元测试吗?

如果是,请解释如何?

5 个答案:

答案 0 :(得分:6)

单元测试私有方法,对我来说听起来有点不对劲。公共和受保护的方法是单元测试的候选者。只是为了测试私有方法,你可以将方法公之于众,或者创建更多调用私有方法的公共方法的测试,并测试私有方法的核心功能。

答案 1 :(得分:2)

一年后,我还推出了一个图书馆来帮助测试私人方法和领域。我相信在Android上仍然需要测试私有方法。

你想让你的活动的方法变得私有,以防止其他类认为他们可以访问它(片段可以,但这对我来说是错误的练习,最好使用可观察的观察者模式)。然后,您将得到仅需要通过测试访问的私有字段和方法。

BoundBox正是这样做的!以下是访问活动的2个私有字段以进行测试的测试示例:

@UiThreadTest
public void testCompute() {
    // given
    boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());

    // when
    boundBoxOfMainActivity.boundBox_getButtonMain().performClick();

    // then
    assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}

答案 2 :(得分:1)

您发布了blog article about this topic并展示了如何通过了解java包和AndroidManifest“包”之间的区别来测试内部方法。

您将最终使用与传统Java相同的技巧:让待测方法受到保护。

我希望有所帮助!

答案 3 :(得分:1)

从测试框架测试私有方法的最佳和合法的合法方法是 @VisibleForTesting 对方法的注释,因此对于测试框架,同样的方法将像公共方法一样可见。 这是Official link for VisibleForTesting annotation

答案 4 :(得分:0)

@VisibleForTesting(否则= VisibleForTesting.PROTECTED) 私有字符串字段;

您可以在单元测试中使用“公共”和“受保护”字段或方法。