расширение постоянства arquillian не работает

Я пытаюсь протестировать свой веб-сервис. Этот веб-сервис использует ejb с jpa для получения своих данных. Поэтому я хочу использовать расширение arquillian, чтобы сделать это.

Это мой тестовый класс arquillian:

@RunWith(Arquillian.class)
public class PersonWebServiceIT {

    private PersonWebService service;

    @Deployment(testable = false)
    public static Archive<?> createDeployment() {
        return ShrinkWrap
                .create(ZipImporter.class, "test.ear")
                .importFrom(new File("simple-webservice-ear-1.0.0-SNAPSHOT.ear"))
                .as(EnterpriseArchive.class);
    }

    @Test
    @UsingDataSet("dataset.yml")
    @SneakyThrows
    public void testFindPersons(@ArquillianResource final URL deploymentUrl) {
        loadService(deploymentUrl);

        Assert.assertEquals(2, service.findPersons().size());
    }

    private void loadService(final URL deploymentUrl)
        //load webservice
    }

}

Это мой файл наборов данных/dataset.yml:

person:
  - id: 1
    firstName: "stijn"
  - id: 2
    firstName: "cremers"

мой файл arquillian.xml:

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.com/arquillian" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
    http://jboss.org/schema/arquillian
    http://jboss.org/schema/arquillian/arquillian-1.0.xsd">

 <extension qualifier="persistence">
        <property name="defaultDataSource">java:/DefaultDS</property>
    </extension>

</arquillian>

Мои тестовые данные никогда не загружаются. Я даже пробовал с неправильно отформатированным файлом yml, но даже тогда я не получаю ошибок.


person cremersstijn    schedule 04.02.2013    source источник


Ответы (2)


Проблема в вашем тестовом режиме. Когда вы определяете свой @Deployment с атрибутом testable=false, все тесты запускаются в режиме клиента, т. е. они не запускаются в контейнере.

Расширение Arquillian Persistence Extension (начиная с версии 1.0.0.Alpha5) не поддерживает выполнение тестов в клиентском режиме; на данный момент поддерживаются только тесты внутри контейнера. Поддержка тестов режима клиента в APE может появиться в будущем выпуске.

person Vineet Reynolds    schedule 05.02.2013
comment
Когда я устанавливаю для testable значение true, я получаю исключение java.lang.ClassNotFoundException для PersonWebServiceIT, потому что тестовый класс не упакован в развертывании. Как я могу это исправить? Я действительно хочу использовать ухо, которое я также использую в производстве, чтобы убедиться, что мой интеграционный тест имеет те же зависимости. - person cremersstijn; 05.02.2013
comment
Я задал новый вопрос для этой проблемы: stackoverflow.com/questions/14713129/ - person cremersstijn; 05.02.2013

<property name="defaultDataSource">java:/DefaultDS</property>

Вы указываете источник данных, который определен на сервере.

В клиентском режиме тестовые примеры запускаются вне контейнера (т. е. другой JVM).

Так что только расширение постоянства не может использовать источник данных, и, следовательно, вы не можете использовать клиентский режим расширения постоянства arquillian.

Если в любом случае есть возможность указать URL-адрес jdbc вместо имени источника данных в файле arquillian.xml. Тогда вы можете использовать расширение сохранения

person sathya_dev    schedule 20.02.2013