Я пришел из лагеря Spring, я не хочу использовать Spring и перехожу на JavaEE6, но у меня проблемы с тестированием DAO + JPA, вот мой упрощенный пример:
public interface PersonDao
{
public Person get(long id);
}
Этоэто очень простой DAO, поскольку я пришел из Spring, я думаю, что DAO все еще имеет свою ценность, поэтому я решил добавить слой DAO.
public class PersonDaoImpl implements PersonDao , Serializable
{
@PersistenceContext(unitName = "test", type = PersistenceContextType.EXTENDED)
EntityManager entityManager ;
public PersonDaoImpl()
{
}
@Override
public Person get(long id)
{
return entityManager .find(Person.class , id);
}
}
Это DAO, реализованный в JPA, я надеюсь, что EEконтейнер или тестовый контейнер, способный внедрить EntityManager (как это делает Spring).
public class PersonDaoImplTest extends TestCase
{
@Inject
protected PersonDao personDao;
@Override
protected void setUp() throws Exception
{
//personDao = new PersonDaoImpl();
}
public void testGet()
{
System.out.println("personDao = " + personDao); // NULL !
Person p = personDao.get(1L);
System.out.println("p = " + p);
}
}
Это мой тестовый файл.
ОК, возникает проблема: поскольку JUnit не можетпонять @ javax.inject.Inject, PersonDao не сможет ввести, тест не пройден.
Как найти тестовую среду, которая способна внедрить EntityManager в PersonDaoImpl и @ Inject PersonDaoImpl в PersonDao из TestCase?
Я попробовал unitils.org, но не могу найти пример, подобный этому, он просто напрямую вводит EntityManagerFactory в TestCast, а не то, что мне нужно ...