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