Robolectric shadow:调用仅在测试类中工作

时间:2016-11-16 07:30:32

标签: android logging shadow robolectric

我正在尝试测试我们为android.util.Log框架编写的包装器。

我的阴影代码和测试如下所示:

@Implements(Log.class)
public static class ShadowLog {
    @Implementation
    public static int i(java.lang.String tag, java.lang.String msg) {
        System.out.println("[SHADOW] [" + tag + "] " + msg);
        return 0;
    }
}

测试类包含适当的标记:

@RunWith(RobolectricTestRunner.class)
@Config(shadows = {LnTest.ShadowLog.class})` tags. 

这是测试:

@Test
public void foobar() {
    Ln.i("LN_TAG", "LN_MSG");
    Log.i("DIRECT_TAG", "DIRECT_MSG");
}

注意:Ln是我们的Log包装器,我想测试它。它本身包含对Log.iLog.d等的调用...

测试的输出是:

  
    

[SHADOW] [DIRECT_TAG] DIRECT_MSG

  
  • 所以我在直接的println调用中看到了一个shadow Log语句,但是我没有看到调用我们的自定义包装器的任何语句......
  • 所以看来我的影子只适用于我的测试中的直接调用,但不适用于来自其他类的调用......

有人可以解释为什么这不起作用以及如何解决它?

0 个答案:

没有答案