2012-04-18 140 views
2

这是我琐碎大同考试测试:大同考试运行测试两次

package ru.focusmedia.odp.server.datastore.itests; 

import static org.ops4j.pax.exam.CoreOptions.felix; 
import static org.ops4j.pax.exam.CoreOptions.options; 

import javax.inject.Inject; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.ops4j.pax.exam.Option; 
import org.ops4j.pax.exam.junit.Configuration; 
import org.ops4j.pax.exam.junit.JUnit4TestRunner; 
import org.osgi.framework.Bundle; 
import org.osgi.framework.BundleContext; 

/** 
* @author Toni Menzel (tonit) 
* @since Mar 3, 2009 
*/ 
@RunWith(JUnit4TestRunner.class) 
public class SampleTest { 

    @Inject 
    BundleContext bundleContext = null; 

    /** 
    * You will get a list of bundles installed by default plus your testcase, 
    * wrapped into a bundle called pax-exam-probe 
    */ 
    @Test 
    public void listBundles() { 
     for (Bundle b : bundleContext.getBundles()) { 
      System.out.println("Bundle " + b.getBundleId() + " : " 
        + b.getSymbolicName()); 
     } 
    } 

    @Configuration 
    public Option[] config() { 
     return options(felix()); 
    } 
} 

和POM文件:

<?xml version='1.0' encoding='UTF-8' ?> 

<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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>ru.focusmedia.odp.server</groupId> 
    <artifactId>datastore.itests</artifactId> 
    <version>0.1.0</version> 
    <!-- <packaging>bundle</packaging> --> 

    <name>Pax Exam based Testproject</name> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.servicemix.tooling</groupId> 
       <artifactId>depends-maven-plugin</artifactId> 
       <version>1.2</version> 
       <executions> 
        <execution> 
         <id>generate-depends-file</id> 
         <goals> 
          <goal>generate-depends-file</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     <pluginManagement> 
      <plugins> 
       <!--This plugin's configuration is used to store Eclipse m2e settings 
        only. It has no influence on the Maven build itself. --> 
       <plugin> 
        <groupId>org.eclipse.m2e</groupId> 
        <artifactId>lifecycle-mapping</artifactId> 
        <version>1.0.0</version> 
        <configuration> 
         <lifecycleMappingMetadata> 
          <pluginExecutions> 
           <pluginExecution> 
            <pluginExecutionFilter> 
             <groupId> 
              org.apache.servicemix.tooling 
             </groupId> 
             <artifactId> 
              depends-maven-plugin 
             </artifactId> 
             <versionRange> 
              [1.2,) 
             </versionRange> 
             <goals> 
              <goal> 
               generate-depends-file 
              </goal> 
             </goals> 
            </pluginExecutionFilter> 
            <action> 
             <execute /> 
             <!-- <ignore/> --> 
            </action> 
           </pluginExecution> 
          </pluginExecutions> 
         </lifecycleMappingMetadata> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

    <dependencies> 

     <dependency> 
      <groupId>org.osgi</groupId> 
      <artifactId>org.osgi.core</artifactId> 
      <version>4.3.0</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.ops4j.pax.exam</groupId> 
      <artifactId>pax-exam-junit4</artifactId> 
      <version>2.3.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.ops4j.pax.exam</groupId> 
      <artifactId>pax-exam-container-native</artifactId> 
      <version>2.3.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.4</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.ops4j.pax.exam</groupId> 
      <artifactId>pax-exam</artifactId> 
      <version>2.3.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.karaf</groupId> 
      <artifactId>karaf</artifactId> 
      <version>2.2.6</version> 
      <type>pom</type> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.karaf</groupId> 
      <artifactId>org.apache.karaf.main</artifactId> 
      <version>2.2.6</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>org.ops4j.pax.exam</groupId> 
      <artifactId>pax-exam-link-mvn</artifactId> 
      <version>2.3.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.ops4j.pax.url</groupId> 
      <artifactId>pax-url-aether</artifactId> 
      <version>1.3.5</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.karaf.tooling</groupId> 
      <artifactId>org.apache.karaf.tooling.testing</artifactId> 
      <version>2.2.6</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

我希望测试运行一次,但这是实际结果:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Pax Exam based Testproject 0.1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- depends-maven-plugin:1.2:generate-depends-file (generate-depends-file) @ datastore.itests --- 
[INFO] Created: /home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.datastore.itests/target/classes/META-INF/maven/dependencies.properties 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ datastore.itests --- 
[debug] execute contextualize 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory /home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.datastore.itests/src/main/resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ datastore.itests --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ datastore.itests --- 
[debug] execute contextualize 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ datastore.itests --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ datastore.itests --- 
[INFO] Surefire report directory: /home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.datastore.itests/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running ru.focusmedia.odp.server.datastore.itests.SampleTest 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/aromanov/.m2/repository/ch/qos/logback/logback-classic/1.0.1/logback-classic-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/aromanov/.m2/repository/org/apache/karaf/org.apache.karaf.client/2.2.6/org.apache.karaf.client-2.2.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/aromanov/.m2/repository/org/slf4j/slf4j-simple/1.6.4/slf4j-simple-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/aromanov/.m2/repository/org/ops4j/pax/logging/pax-logging-api/1.6.5/pax-logging-api-1.6.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
[ o.o.p.e.s.DefaultExamSystem] - Pax Exam System (Version: 2.3.1) created. 
[org.ops4j.pax.exam.rbc.internal.Activator] : Name, port or host is null. So this RBC remains inactive. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling SLF4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Jakarta Commons Logging API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Log4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Avalon Logger API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling JULI Logger API support. 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Test PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d to be in PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d, 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d" and expression="ru.focusmedia.odp.server.datastore.itests.SampleTest;listBundles" 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Test PaxExam-Executable to be in PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d, 
[org.ops4j.pax.exam.rbc.internal.Activator] : Name, port or host is null. So this RBC remains inactive. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling SLF4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Jakarta Commons Logging API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Log4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Avalon Logger API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling JULI Logger API support. 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Test PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d to be in PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d, 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d" and expression="ru.focusmedia.odp.server.datastore.itests.SampleTest;listBundles" 
org.ops4j.pax.exam.extender.service[org.ops4j.pax.exam.raw.extender.intern.Probe] : Test PaxExam-Executable to be in PaxExam-1f348e55-521a-48f1-b5a2-3e1c3276012d, 
Bundle 0 : org.eclipse.osgi 
Bundle 1 : org.ops4j.pax.exam.rbc 
Bundle 2 : org.ops4j.pax.exam.inject 
Bundle 3 : org.ops4j.pax.exam.extender.service 
Bundle 4 : osgi.cmpn 
Bundle 5 : org.ops4j.pax.logging.pax-logging-api 
Bundle 6 : org.apache.geronimo.specs.geronimo-atinject_1.0_spec 
Bundle 7 : PAXEXAM-PROBE-5c53a55c-5180-4471-923d-41806df0eb26 
Bundle 0 : org.apache.felix.framework 
Bundle 1 : org.ops4j.pax.exam.rbc 
Bundle 2 : org.ops4j.pax.exam.inject 
Bundle 3 : org.ops4j.pax.exam.extender.service 
Bundle 4 : osgi.cmpn 
Bundle 5 : org.ops4j.pax.logging.pax-logging-api 
Bundle 6 : org.apache.geronimo.specs.geronimo-atinject_1.0_spec 
Bundle 7 : PAXEXAM-PROBE-5c53a55c-5180-4471-923d-41806df0eb26 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling SLF4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Jakarta Commons Logging API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Log4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Avalon Logger API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling JULI Logger API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling SLF4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Jakarta Commons Logging API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Log4J API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling Avalon Logger API support. 
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Disabling JULI Logger API support. 
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.964 sec 

Results : 

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

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.130s 
[INFO] Finished at: Wed Apr 18 13:50:30 MSK 2012 
[INFO] Final Memory: 12M/214M 
[INFO] ------------------------------------------------------------------------ 

为什么测试也在org.eclipse.osgi上运行?

回答

3

检查Equinox bundle对测试范围的瞬态依赖性,并明确排除它。

options(felix()); - 仅适用于PaxRunner容器。它被Native Container忽略。

本地容器使用来自classpath的OSGi框架。

Pax-Exam options

1

我有同样的问题,我的一个同事把我从返回选项[]的方法去除@Configuration注释,并解决了该问题。

相关问题