Создание связанных с базой данных тестовых случаев JUNIT для Struts2
Я использую struts2-junit-plugin для написания тестовых примеров для веб-приложения struts2. Моя проблема в том, что в моих классах действий есть некоторые запросы к базе данных, использующие источник данных (jndi), как я могу смоделировать это в моем тестовом примере.
РЕДАКТИРОВАТЬ
В этом тесте я устанавливаю удаленного пользователя.
public void testexecute()
{
try
{
ActionProxy proxy = getActionProxy("/index");
IndexAction action = (IndexAction) proxy.getAction();
request.setRemoteUser("Haider");
assertTrue(action.execute().equals(ActionSupport.SUCCESS));
assertTrue(true);
}
catch(Exception ex)
{
assertTrue(false);
}
}
и в IndexAction (реализует PrincipalAware) у меня есть это
public String execute()
{
try
{
if(principleProxy != null)
{
userModel = new UserModel();
userModel.setUserName(principleProxy.getRemoteUser());
}
else
{
return ERROR;
}
................................
.................................
}
в принципе индексирования Proxy является нулевым, когда я запускаю тест.
1 ответ
Вы можете изучить использование Dbunit
DbUnit - это расширение JUnit (также используемое с Ant), предназначенное для управляемых базой данных проектов, которое, помимо прочего, переводит вашу базу данных в известное состояние между тестовыми запусками. Это отличный способ избежать множества проблем, которые могут возникнуть, когда один тестовый случай повреждает базу данных и приводит к сбою или усугублению последующих тестов.
DbUnit имеет возможность экспортировать и импортировать данные вашей базы данных в и из наборов данных XML. Начиная с версии 2.0, DbUnit также может работать с очень большими наборами данных при использовании в потоковом режиме. DbUnit также может помочь вам проверить, что данные вашей базы данных соответствуют ожидаемому набору значений.