我为绘图应用程序构建了一个自定义视图(DrawView)。它在很大程度上取决于内部位图的实际宽度和高度。当我尝试使用Robolectric 2.2进行测试时,视图的长度和宽度为0会导致内部逻辑崩溃。如何模拟真实的屏幕尺寸?我使用一个简单的LinearLayout,将DrawView作为其中唯一要测试的元素。这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawViewLayout">
<net.thoster.scribmasterlib.DrawView
android:id="@+id/drawView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
这是我的单元测试:
@RunWith(RobolectricTestRunner.class)
public class DrawViewTest {
Activity activity;
DrawView drawView;
LinearLayout layout;
@Before
public void setUp() throws Exception {
ActivityController<Activity> activityController = Robolectric.buildActivity(Activity.class).create().start().resume()
.visible();
Activity activity = activityController.get();
layout = (LinearLayout) LayoutInflater.from(activity).inflate(R.layout.test, null);
drawView = (DrawView) layout.findViewById(R.id.drawView);
}
@Test
public void testFloodFill() throws Exception {
System.out.println(drawView.getWidth());
drawView.floodFill(new Point(1, 1), Color.BLACK, FloodFillMode.PIXEL);
Bitmap b = drawView.getDrawingAsNewBitmap();
int pixel = b.getPixel(2, 2);
assertEquals(pixel, Color.BLACK);
}
}
答案 0 :(得分:1)
正如错误指出https://github.com/robolectric/robolectric/issues/819 ...
Robolectric并没有试图模仿Android - 只是假装足够,所以你可以编写合理的单元测试。视图没有宽度或高度并不让我感到惊讶,因为我们没有做任何会导致布局传递的事情。
请查看有关潜在解决方法的错误。