Использование PaxExam с Bndtools

Кто-нибудь когда-нибудь пытался запустить тесты PaxExam Junit с помощью Bndtools и может дать мне несколько советов? Я пробовал это сам, но без Maven мне тяжело загружать все зависимости.

Что я сделал до сих пор:

  1. Загрузите зависимости PaxExam из Central Maven (есть ли более простые способы?)
  2. Создайте свойство, содержащее все зависимости в cnf/bnd.bnd
  3. Добавить свойство в путь сборки, где я хочу писать тесты
  4. Выполнение тестов не выполняется, потому что отсутствуют дополнительные зависимости, поэтому вернитесь к 1. : D

Я хочу использовать PaxExam, потому что его проще использовать с задачей Ant Junit в качестве интеграционного теста Bndtools, поскольку они только создают отчеты о тестах, но на самом деле они не являются «тестами Junit».

Более поздний сценарий:

  1. Строительные проекты с Hudson и Ant
  2. Hudson также должен выполнить Junit Ant Task, где неудачные тесты также должны остановить процесс сборки.

Приведенный выше сценарий уже работает с обычными тестами Junit4 без запуска среды OSGi, но теперь я хочу провести интеграционные тесты.

Кто-нибудь может мне помочь?

Привет.


person christian.vogel    schedule 31.07.2012    source источник
comment
Рассматривали ли вы просто использование Maven с плагином Maven Bundle вместо ant+bndtools? Это отлично работает для меня.   -  person Björn Pollex    schedule 01.08.2012
comment
На мой взгляд, Bndtools намного лучше, чем MBP, поскольку в некоторых случаях он упрощает разработку. Так что да, я посмотрел, но решил использовать Bndtools;)   -  person christian.vogel    schedule 01.08.2012
comment
Почему отчеты об испытаниях bnd не являются «настоящими» модульными тестами?   -  person Peter Kriens    schedule 02.08.2013
comment
Привет, Питер, я не могу дать вам ответ, так как я не помню, почему у меня были проблемы, и я попросил дать мне совет для PaxExam. Может быть, это была единственная возможность, которая у меня была тогда, или я не был так опытен, как сейчас;) (Возможно, мне не хватало связи сокета между Bndtools и представлением JUnit для создания вывода там, а не только консольный вывод провала и успеха - точно не помню) :)   -  person christian.vogel    schedule 22.08.2013


Ответы (1)


Даже если вы не используете Maven для создания своего проекта, вы все равно можете использовать его для загрузки maven-артефактов и их транзитивных зависимостей. Для этого сначала необходимо установить Maven. Затем вы создаете пустой каталог и внутри этого каталога создаете файл с именем pom.xml. Для Pax Exam это должно выглядеть так:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <properties>
        <exam.version>2.5.0</exam.version>
        <url.version>1.4.2</url.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.ops4j.pax.exam</groupId>
            <artifactId>pax-exam-container-native</artifactId>
            <version>${exam.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.exam</groupId>
            <artifactId>pax-exam-junit4</artifactId>
            <version>${exam.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.exam</groupId>
            <artifactId>pax-exam-link-mvn</artifactId>
            <version>${exam.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.url</groupId>
            <artifactId>pax-url-aether</artifactId>
            <version>${url.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.framework</artifactId>
            <version>3.2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>0.9.29</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>0.9.29</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Я взял список зависимостей из документации по экзамену Pax. Затем вы открываете командную строку, переходите в каталог, в котором вы создали свой pom.xml, и выполняете следующую команду:

mvn dependencies:copy-dependencies

(предполагается, что вы установили Maven таким образом, что команда mvn доступна из командной строки). Теперь maven будет извлекать все транзитивные зависимости зависимостей, указанных вами в pom.xml, и по умолчанию сохранять их в target/dependency.

person Björn Pollex    schedule 01.08.2012
comment
Забавная история: я уже думал сделать так, как вы описали в своем ответе ;) Так что +1 от меня :) Но тем не менее, может есть и другие способы. с надеждой - person christian.vogel; 01.08.2012
comment
Я принял ваш ответ, так как кажется, что это единственный способ :) Так что для меня он самый полезный. Поздравляю ;) - person christian.vogel; 04.08.2012
comment
Вы можете предложить вознаграждение за свой вопрос, чтобы получить больше просмотров и побудить людей задуматься. - person Björn Pollex; 05.08.2012