Я использую Игла для этого.Он хорошо работает с Mockito и EasyMock, если вы хотите издеваться над другими объектами.
Сначала я пишу файл persistencte.xml для тестов (src / test / resources / META-INF), например:
<persistence-unit name="rapPersistenceTest" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/test"/>
...
</properties>
</persistence-unit>
В моем Junit-Testclass я пишу:
public class DaoNeedleTest {
//here Needle will create persistenceContext for your testclass
public static DatabaseRule databaseRule = new DatabaseRule("rapPersistenceTest");
//here you can get the entityManager to manipulate data directly
private final EntityManager entityManager = databaseRule.getEntityManager();
@Rule
public NeedleRule needleRule = new NeedleRule(databaseRule);
//here you can instantiate your daoService
@ObjectUnderTest
DAOService daoService;
@Test
public void test() {
//if your method needs a transaction here you can get it
entityManager.getTransaction().begin();
daoService.yourMethod();
entityManager.getTransaction().commit();
}
Вам также необходим файл конфигурации иглы в src / test / resources, где вы указываете, какой тип Mock-провайдера вы используете.Например, я использую Mockito:
mock.provider=de.akquinet.jbosscc.needle.mock.MockitoProvider
Вот и все.