6
我爲繪圖應用程序構建了自定義視圖(DrawView)。它很大程度上取決於內部位圖的實際寬度和高度。當我嘗試使用Robolectric 2.2進行測試時,視圖的長度和寬度都爲0,這會使我的內部邏輯崩潰。我怎樣才能嘲笑一個真正的屏幕大小?我使用一個簡單的LinearLayout和DrawView作爲測試的唯一元素。這裏是我的佈局:使用Robolectric測試自定義視圖:寬度和高度始終爲0
<?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);
}
}
您正試圖在繪製之前獲取寬度和高度的參考。首先執行一個措施,然後打電話給getMeasuredHeight /寬度 – Tobrun
對不起,那也行不通。我在setUp-Method中試過這種方法: drawView.measure(View.MeasureSpec.EXACTLY,View.MeasureSpec.EXACTLY); System.out.println(drawView.getMeasuredHeight()); System.out.println(drawView.getMeasuredWidth()); 寬度和高度仍然爲0. –
這裏的問題不是我沒有在Android中獲取視圖的高度或寬度。與Robolectric結合使用無法正常工作。 –