-
Notifications
You must be signed in to change notification settings - Fork 24
UnitTest
aadrian edited this page Nov 13, 2017
·
3 revisions
Mirage-SQL
provides MockSqlManager
for unit testing of classes which use SqlManager
.
Using MockSqlManager
instead of SqlManager
, you can execute a your code which uses SqlManager
without a database. You can configure results of MockSqlManager
and verify executed SQLs using MirageTestContext
.
An example of TestCase which uses MockSqlManager
is below:
@Test
public void testGetBookById(){
// set MockSqlManager to the test target
BookService bookService = new BookService();
bookService.setSqlManager(new MockSqlManager());
// configure results which would be returned by MockSqlManager.
Book book = new Book();
book.setBookName("Mirage in Action");
MirageTestContext.addResult(book);
// execute
Book result = bookService.getBookById(new Long(100));
// assert returned object
assertEquals("Mirage in Action", book.getName);
// verify the number of executed SQL
MirageTestContext.verifySqlCount(1);
// verify the executed SQL
MirageTestContext.verifySql(0,
"SELECT ID, BOOK_NAME, AUTHOR, PUBLISHER, PRICE, PUBLISH_DATE " +
"FROM BOOK WHERE ID = ? ORDER BY ID ASC", // verify SQL
new Long(100)); // verify Parameters
}
If returned values has been not configured, MockSqlManager
returns following values as a result.
-
empty list for
SqlManager#getResultList()
-
null for
SqlManager#getSingleResult()
-
1 for
SqlManager#insertEntity()
,SqlManager#updateEntity()
,SqlManager#deleteEntity()