2013-12-05 2 views
0

Отредактировано для упрощения примера ...Испытание с использованием PaxExam 3.x - TestNg

Я переношу систему в Maven. Я хочу использовать PaxExam для запуска теста с TestNg.

Я пытаюсь запустить простой тест с использованием PaxExam:

pom.xml:

<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>MyTest</groupId> 
    <artifactId>PaxExam</artifactId> 
    <version>0.0.2</version> 
    <packaging>jar</packaging> 
    <name>Prove PaxExam</name> 

    <properties> 
     <exam.version>3.3.0</exam.version> 
     <url.version>1.6.0</url.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.3.1</version> 
     </dependency> 
     <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-testng</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>4.0.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> 
      <dependency> 
     <groupId>org.ow2.spec.ee</groupId> 
     <artifactId>ow2-jta-1.1-spec</artifactId> 
     <version>1.0.12</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

Java программа:

package MyTest.PaxExam; 
    import static org.ops4j.pax.exam.CoreOptions.*; 
    import static org.testng.Assert.*; 
    import javax.inject.Inject; 
    import org.ops4j.pax.exam.Option; 
    import org.ops4j.pax.exam.Configuration; 
    import org.ops4j.pax.exam.ConfigurationFactory; 
    import org.ops4j.pax.exam.spi.reactors.PerClass; 
    import org.ops4j.pax.exam.testng.listener.PaxExam; 
    import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; 
    import org.osgi.framework.Bundle; 
    import org.osgi.framework.BundleContext; 
    import org.testng.annotations.Listeners; 
    import org.testng.annotations.Test; 
    import ch.qos.logback.classic.*; 
    import org.slf4j.LoggerFactory; 

    @Listeners(PaxExam.class) 
    @ExamReactorStrategy(PerClass.class) 
    public class Prove { 

     @Inject 
     BundleContext bc; 

     @Configuration 
     public Option[] config() { 
      System.out.println("config() called"); 
      return options(mavenBundle("org.testng","testng","6.3.1"));   
     } 


     @org.testng.annotations.Test 
     public void checkInject() { 
      System.out.println("checkInject() called"); 
      assertNotNull(bc); 
     } 
    } 

Результаты, которые я имею, когда я проверяю испытания, являются:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Prove PaxExam 0.0.2 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ PaxExam --- 
[debug] execute contextualize 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory C:\users\dan\desktop\acf\MyTest2\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ PaxExam --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ PaxExam --- 
[debug] execute contextualize 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ PaxExam --- 
[INFO] Compiling 1 source file to C:\users\dan\desktop\acf\MyTest2\target\test-classes 
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ PaxExam --- 
[INFO] Surefire report directory: C:\users\dan\desktop\acf\MyTest2\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ PaxExam --- 
[INFO] Building jar: C:\users\dan\desktop\acf\MyTest2\target\PaxExam-0.0.2.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.246s 
[INFO] Finished at: Fri Dec 06 16:33:14 CET 2013 
[INFO] Final Memory: 15M/226M 
[INFO] ------------------------------------------------------------------------ 

Контейнер не запускается, проверка не выполняется.

ответ

0

Наконец-то!

Согласно верному плагину справки о: http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html

Пока они именуются по умолчанию, такие как * Test.java они будут выполняться по безошибочному, как TestNG тесты.

Если вы хотите использовать другую схему именования, вы можете изменить параметр , как описано во вложениях и исключениях Пример тестов.

Имя моего тестового класса не начиналось с теста и не заканчивалось тестом. Проблема с изменением имени класса на TestProve.java решает проблему.

Благодаря hwellmann для своего времени.

0

Не уверен, что вы пытаетесь сделать. Если вы пытаетесь запустить тесты OSGi со встроенной инфраструктурой OSGi, не используйте модуль exam-maven-plugin.

Если вы пытаетесь запустить простые старые тесты интеграции/интеграции, взаимодействующие с внешним OSGi-приложением, вы можете использовать плагин exam-maven для запуска этого приложения в Pax Exam server mode, но тогда нет необходимости использовать Pax Exam in ваши тесты.

+0

Я пытаюсь запустить простой интегрированный тест osgi. В этом примере нет тестируемого пакета, просто тест, который должен запускаться экзаменом pax. Первая попытка была выполнена без включения плагинов (экзамен-maven-plugin, maven-failafe-plugin), поскольку доступная документация для экзамена pax говорит, что для режима сервера. Когда maven запущен, нет никакого пакета для экзаменов pax. Если я добавлю плагины, то, по крайней мере, мы увидим, что контейнер запущен, вызывается метод конфигурации, но не метод, аннотированный как @Test. –

+0

Ознакомьтесь с собственными [регрессионными тестами TestNG] (https://github.com/ops4j/org.ops4j.pax.exam2/tree/master/itest/osgi/src/it/regression-testng) и начните оттуда. –

+0

Я ничего не вижу там, который отличается от приведенного мной примера. То, что, похоже, происходит, заключается в том, что экзамен по pax не видит, что я определил зависимость от фелекса, и не запускает felix в тестовом контейнере. Почему, это вопрос. –

Смежные вопросы