Я новичок в dbUnit и пишу тестовый пример для hibernetJpa, я пробовал много способов и искал по нему очень много, но не повезло.Я прилагаю свой код, пожалуйста, помогите мне.
test-accountSampleDB.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<TEST_DB
TOK_ID="123"
DATA_SENT_DATE="2018/11/01"
/>
</dataset>
Класс DAO
@Repository
@Transactional
public class TestDaoJpaImpl {
@PersistenceContext(unitName="testPersistance")
private EntityManager entityManager;
public TestDaoJpaImpl() {
super();
}
public Date getDataSendDate(String tockVal) {
StringBuilder sql= new StringBuilder();
sql.append("select t.urlSendDate from myTable t where t.tokVal= :tock");
Query query= entityManager.createQuery(sql.toString());
query.setParameter("tock", tockVal);
return (Date) query.getSingleResult();
}
}
Тестовый класс
@RunWith(SpringJunit4ClassRunner.class)
@ContextConfiguration(classes= {DBUnitHibernateBeanConfig.class}, loader=AnnotationConfigCOntextLoader.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class,
DbUnitTestExecutionListener.class
})
@AutoConfigureTestDatabase(replace=AutoConfigureTestDatabase.Replace.NONE)
@DbUnitConfiguration(dataSetLoader=XmlDataSetLoader.class)
public class TestDaoJpaTest {
TestDaoJpaImpl accountDaoJpa;
@Mocked // mockit.Mocked
private EntityManager entityManager;
@Before
@DatabaseSetup(type=DatabaseOperation.CLEAN_INSERT, value= {"test-accountSamplrDB.xml"})
public void startUp() {
accountDaoJpa= new TestDaoJpaImpl();
Deencapsulation.setField(accountDaoJpa,"entityManager", entityManager);
}
@Test
public void test_doSomeWork() {
Date urlSendDate=accountDaoJpa.getDataSendDate("123456");
Date compareDate= new Date(2019/04/01);
assertEquals(urlSendDate,compareDate);
}
}
POM.xml
<dependencies>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.springtestdbunit</groupId>
<artifactId>spring-test-dbunit</artifactId>
<version>1.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.5.1</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
В классе TestDaoJpaImpl.java "Query query = entityManager.createQuery (sql.toString ());"запрос приходит ноль.Я не знаю почему.Я пытался издеваться над Query, но не могу получить значение запроса.Заранее благодарю за помощь.