diff --git a/.gitignore b/.gitignore
index 3a5f35d..aaf6b34 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@
 *.class
 bin/
 *.properties
-*.project
 *.cproject
 *.settings
 *.pyc
diff --git a/androidtestlib/tests/.classpath b/androidtestlib/tests/.classpath
new file mode 100644
index 0000000..99b9c55
--- /dev/null
+++ b/androidtestlib/tests/.classpath
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="src" path="dexmaker-java-src"/>
+	<classpathentry kind="src" path="dexmaker-dx-src"/>
+	<classpathentry kind="src" path="hamcrest-src"/>
+	<classpathentry kind="src" path="junit4-src"/>
+	<classpathentry kind="src" path="android-test-lib-src"/>
+	<classpathentry kind="src" path="objenesis-src"/>
+	<classpathentry kind="src" path="mockito-src"/>
+	<classpathentry kind="src" path="dexmaker-mockito"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/androidtestlib/tests/.gitignore b/androidtestlib/tests/.gitignore
index 4f50fa0..4f62b84 100644
--- a/androidtestlib/tests/.gitignore
+++ b/androidtestlib/tests/.gitignore
@@ -1,2 +1 @@
-.classpath
 gen
diff --git a/androidtestlib/tests/.project b/androidtestlib/tests/.project
new file mode 100644
index 0000000..e4e4c5e
--- /dev/null
+++ b/androidtestlib/tests/.project
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>AndroidTestLibTests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>android-test-lib-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/frameworks/testing/androidtestlib/src</locationURI>
+		</link>
+		<link>
+			<name>dexmaker-dx-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/dexmaker/src/dx/java</locationURI>
+		</link>
+		<link>
+			<name>dexmaker-java-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/dexmaker/src/main/java</locationURI>
+		</link>
+		<link>
+			<name>dexmaker-mockito</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/dexmaker/src/mockito/java</locationURI>
+		</link>
+		<link>
+			<name>hamcrest-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/hamcrest/src</locationURI>
+		</link>
+		<link>
+			<name>junit4-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/junit/src</locationURI>
+		</link>
+		<link>
+			<name>littlemock-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/littlemock/src</locationURI>
+		</link>
+		<link>
+			<name>mockito-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/mockito/src</locationURI>
+		</link>
+		<link>
+			<name>objenesis-src</name>
+			<type>2</type>
+			<locationURI>ANDROID_TOP/external/objenesis/main/src</locationURI>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/androidtestlib/tests/Android.mk b/androidtestlib/tests/Android.mk
index 3d27857..fa27121 100644
--- a/androidtestlib/tests/Android.mk
+++ b/androidtestlib/tests/Android.mk
@@ -25,9 +25,10 @@
 
 LOCAL_MODULE_TAGS := tests
 
-LOCAL_SDK_VERSION := 8
+# SDK 10 needed for mockito/objnesis. Otherwise 8 would work
+LOCAL_SDK_VERSION := 10
 
-LOCAL_STATIC_JAVA_LIBRARIES := android-test-lib dexmaker littlemock
+LOCAL_STATIC_JAVA_LIBRARIES := android-test-lib mockito-target dexmaker
 
 LOCAL_PROGUARD_ENABLED := disabled
 
diff --git a/androidtestlib/tests/src/com/android/test/runner/AndroidJUnitRunnerTest.java b/androidtestlib/tests/src/com/android/test/runner/AndroidJUnitRunnerTest.java
index 6a24a47..441c4f0 100644
--- a/androidtestlib/tests/src/com/android/test/runner/AndroidJUnitRunnerTest.java
+++ b/androidtestlib/tests/src/com/android/test/runner/AndroidJUnitRunnerTest.java
@@ -18,11 +18,12 @@
 import android.content.Context;
 import android.os.Bundle;
 
-import com.google.testing.littlemock.LittleMock;
-import com.google.testing.littlemock.Mock;
-
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
@@ -57,7 +58,7 @@
         };
         mAndroidJUnitRunner.setArguments(new Bundle());
         mStubStream = new PrintStream(new ByteArrayOutputStream());
-        LittleMock.initMocks(this);
+        MockitoAnnotations.initMocks(this);
     }
 
     /**
@@ -68,9 +69,8 @@
     public void testBuildRequest_singleClass() {
         Bundle b = new Bundle();
         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName");
-        LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName");
         mAndroidJUnitRunner.buildRequest(b, mStubStream);
-        LittleMock.verify(mMockBuilder);
+        Mockito.verify(mMockBuilder).addTestClass("ClassName");
     }
 
     /**
@@ -81,10 +81,9 @@
     public void testBuildRequest_multiClass() {
         Bundle b = new Bundle();
         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName1,ClassName2");
-        LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName1");
-        LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName2");
         mAndroidJUnitRunner.buildRequest(b, mStubStream);
-        LittleMock.verify(mMockBuilder);
+        Mockito.verify(mMockBuilder).addTestClass("ClassName1");
+        Mockito.verify(mMockBuilder).addTestClass("ClassName2");
     }
 
     /**
@@ -95,8 +94,7 @@
     public void testBuildRequest_method() {
         Bundle b = new Bundle();
         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName1#method");
-        LittleMock.doNothing().when(mMockBuilder).addTestMethod("ClassName1", "method");
         mAndroidJUnitRunner.buildRequest(b, mStubStream);
-        LittleMock.verify(mMockBuilder);
+        Mockito.verify(mMockBuilder).addTestMethod("ClassName1", "method");
     }
 }
