Robolectric自定义阴影写作

时间:2014-04-11 09:18:28

标签: android robolectric

您好我已经为robolectric 2.3项目写了一个课程如下

@Implements(Bitmap.class)
public class MyShadowBitmap extends ShadowBitmap {

    public MyShadowBitmap() {
       // can also be some other config value
        setConfig(Bitmap.Config.ARGB_8888);
    }
}

我的问题是如何编写CustomTestRunner类,它将扩展RobolectricTestRunner以及如何在robolectric中使用MyShadowBitmap进行单元测试,请帮忙。

1 个答案:

答案 0 :(得分:1)

我使用的是Robolectric 2.3,并且可以使用Robolectric的@Config注释来使用自定义阴影。

这就是我所拥有的:

       // ShadowLog class, to print android.util.Log to the console when running tests
       @Implements(Log.class)
       public class ShadowLog {
            @Implementation
            public static void d(String tag, String msg) {
                print(tag, "D", msg, null);
            }
            // other implementation
            private static void print(String tag, String level, String msg, Throwable throwable) {
                System.out.printf("%s(%s): %s. %s\n", tag, level, msg, (null == throwable ? "" : throwable));
            }
       }

       // Test class
       @RunWith(RobolectricTestRunner.class)
       @Config(shadows = {ShadowLog.class})
       public class MyTest {
           private static final String TAG = MyTest.class.getSimpleName();

           @Test
           public void testLog {
               Log.d(TAG, "debug log");
               Log.i(TAG, "info log");
               Log.w(TAG, "warning log");
               Log.e(TAG, "error log");
           }
       }

这就是我在控制台中所拥有的:

MyTest(D): debug log. MyTest(I): info log. MyTest(W): warning log. MyTest(E): error log.

注意:您也可以将@Config应用于单个测试用例而不是整个类。