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, и как я буду использовать MyShadowBitmap для модульного тестирования в robolectric. Пожалуйста, помогите.

1 ответ

Решение

Я использую Robolectric 2.3, и могу использовать собственные тени, используя аннотацию @Config Robolectric.

Вот что у меня есть:

       // 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 к отдельным тестовым сценариям вместо всего класса.

Другие вопросы по тегам