Test cases for measured width/height in ShadowView
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
index ce8cee1..555be36 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowView.java
@@ -395,9 +395,14 @@
     		Method onMeasureMethod = realView.getClass().getDeclaredMethod("onMeasure", Integer.TYPE, Integer.TYPE );
     		onMeasureMethod.setAccessible(true);
     		onMeasureMethod.invoke( realView, widthMeasureSpec, heightMeasureSpec );
-    	} catch ( NoSuchMethodException e ) { throw new RuntimeException(e); }
-    	  catch ( IllegalAccessException e ) { throw new RuntimeException(e); }
-     	  catch ( InvocationTargetException e ) { throw new RuntimeException(e); } 
+    	} catch ( NoSuchMethodException e ) { 
+    		// use default shadow implementation
+    		onMeasure(widthMeasureSpec, heightMeasureSpec);
+    	} catch ( IllegalAccessException e ) { 
+    		throw new RuntimeException(e);
+    	} catch ( InvocationTargetException e ) { 
+    		throw new RuntimeException(e); 
+    	} 
     }
     
     @Implementation
diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
index 6a1a800..1f1b1e1 100644
--- a/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/shadows/ViewTest.java
@@ -4,10 +4,8 @@
 import android.content.Context;
 import android.graphics.Point;
 import android.graphics.drawable.ColorDrawable;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
+import android.view.*;
+import android.view.View.MeasureSpec;
 import android.view.animation.Animation;
 import android.widget.LinearLayout;
 import com.xtremelabs.robolectric.R;
@@ -334,6 +332,44 @@
         shadowOf(view1).finishedAnimation();
         assertTrue(view1.onAnimationEndWasCalled);
     }
+    
+    @Test
+    public void test_measuredDimension() {
+    	// View does not provide its own onMeasure implementation
+    	TestView view1 = new TestView(new Activity());
+
+    	assertThat(view1.getHeight(), equalTo(0));
+    	assertThat(view1.getWidth(), equalTo(0)); 
+    	assertThat(view1.getMeasuredHeight(), equalTo(0));
+    	assertThat(view1.getMeasuredWidth(), equalTo(0));    
+    	
+    	view1.measure( MeasureSpec.makeMeasureSpec(150, MeasureSpec.AT_MOST),
+    				   MeasureSpec.makeMeasureSpec(300, MeasureSpec.AT_MOST) );
+    	
+    	assertThat(view1.getHeight(), equalTo(0));
+    	assertThat(view1.getWidth(), equalTo(0)); 
+    	assertThat(view1.getMeasuredHeight(), equalTo(300));
+    	assertThat(view1.getMeasuredWidth(), equalTo(150));  
+    }
+    
+    @Test
+    public void test_measuredDimensionCustomView() {
+       	// View provides its own onMeasure implementation
+    	TestView2 view2 = new TestView2(new Activity());
+
+    	assertThat(view2.getHeight(), equalTo(0));
+    	assertThat(view2.getWidth(), equalTo(0)); 
+    	assertThat(view2.getMeasuredHeight(), equalTo(0));
+    	assertThat(view2.getMeasuredWidth(), equalTo(0));    
+    	
+    	view2.measure( MeasureSpec.makeMeasureSpec(1000, MeasureSpec.AT_MOST),
+    				   MeasureSpec.makeMeasureSpec(600, MeasureSpec.AT_MOST) );
+    	
+    	assertThat(view2.getHeight(), equalTo(0));
+    	assertThat(view2.getWidth(), equalTo(0)); 
+    	assertThat(view2.getMeasuredHeight(), equalTo(400));
+    	assertThat(view2.getMeasuredWidth(), equalTo(800));  
+    }
 
     private static class TestAnimation extends Animation {
     }
@@ -365,4 +401,15 @@
             onAnimationEndWasCalled = true;
         }
     }
+    
+    private static class TestView2 extends View {
+    	public TestView2(Context context) {
+            super(context);
+        }
+
+		@Override
+		protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+			super.onMeasure(800, 400);
+		}
+    }
 }