Robolectric
provides a simple approach to automate unit test case for android by using
standard JUnit tests. It runs on any JVM, without needing the emulator or a
device.
Advantages of Roboelectric:
No Mocking
Frameworks Required
Run Tests Outside of the Emulator
Test Annotations
@RunWith
To run your test with Robolectric, you need to tell JUnit using the @RunWith
annotation on your test
class:
@RunWith (RobolectricTestRunner.class)
// required for Robolectric!
For more details: http://pivotal.github.io/robolectric/user-guide.htmlWith Robolectric, we can write a small unit test for custom content provide like this.
@RunWith(RobolectricTestRunner.class) public class BookContentProviderTest { private Activity activity; private BookProvider bookProvider; private ContentResolver contentResolver; public static final String AUTHORITY = "com.test.provider.Book"; public static final String BOOK_TABLE_NAME = "book"; /** * The columns we are interested in from the database */ public static final String[] BOOK_PROJECTION = new String[] { BookColumns._ID, // 0 BookColumns.BOOK_NAME, // 1 }; public static final Uri BOOK_URI = Uri.parse("content://" + AUTHORITY + "/" + BOOK_TABLE_NAME); private String[] bookList = new String[] { "angels and demons", "Book1", "Book2", "Book3" }; @Before public void setUp() throws Exception { bookProvider = new BookProvider(); activity = new Activity(); contentResolver = activity.getContentResolver(); bookProvider.onCreate(); ShadowContentResolver.registerProvider(AUTHORITY, bookProvider); } @Test public void testContentProvider() { insertBook(new Book("53bfc0b980b0", "angels and demons")); insertBook(new Book("53bfc0b980b3", "Book1")); insertBook(new Book("53bfc0b980b1", "Book2")); insertBook(new Book("53bfc0b980b2", "Book3")); Cursor cursor = contentResolver.query(BOOK_URI, BOOK_PROJECTION, null, null, BookColumns.DEFAULT_SORT_ORDER); cursor.moveToFirst(); Assert.assertTrue(cursor.getCount() == 4); if (cursor.getCount() != 0) { do { Assert.assertEquals(bookList[cursor.getPosition()], cursor.getString(cursor .getColumnIndex(BookColumns.BOOK_NAME))); } while (cursor.moveToNext()); } } private void insertBook(Book book) { contentResolver.insert(BOOK_URI, getContentValue(book)); } private ContentValues getContentValue(Book book) { ContentValues values; values = new ContentValues(); values.put(BookColumns._ID, book.getBookId()); values.put(BookColumns.BOOK_NAME, book.getName()); return values; } }
Hey,guys,can you send me a sample project about this?thx.
ReplyDeleteMy email is duduhonngyao90@gmail.com
Great
ReplyDeletehttp://java360.co.in/java-mocking-frameworks/
Good content. You write beautiful things.
ReplyDeletekorsan taksi
sportsbet
taksi
hacklink
mrbahis
sportsbet
mrbahis
vbet
hacklink
Good content. You write beautiful things.
ReplyDeletehacklink
korsan taksi
hacklink
sportsbet
vbet
taksi
mrbahis
sportsbet
mrbahis
Good text Write good content success. Thank you
ReplyDeletetipobet
kibris bahis siteleri
kralbet
bonus veren siteler
poker siteleri
betpark
mobil ödeme bahis
slot siteleri