如果父测试类依赖,则Maven测试失败

时间:2015-02-27 23:01:08

标签: maven-3

我有2个maven模块和测试如下:

Module1 
`src/test/java/Parent` 

Module2 
`src/test/java/Test  // Test extends Parent`

Module1对Module1具有朗姆酒依赖性

当我运行mvn test时,我得到以下错误:

  

org.apache.maven.surefire.util.SurefireReflectionException:java.lang.reflect.InvocationTargetException;嵌套异常是java.lang.reflect.InvocationTargetException:null   java.lang.reflect.InvocationTargetException   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:606)   在org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)   在org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke(ProviderFactory.java:110)   在org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)   在org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)   在org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)   引起:java.lang.NoClassDefFoundError:Parent

知道我可能做的正确吗? eclipse中的编译成功。

1 个答案:

答案 0 :(得分:0)

通常在Maven中,单元测试受模块限制,不会传播,这意味着您无法在其他模块中使用它们。不幸的是,Eclipse并没有像你已经意识到的那样100%正确地进行这种分离。

如果您需要从src/test/创建called test-jar which contains文件,您可以从其他模块重用这些类。这意味着您需要将以下内容添加到Module1

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.5</version>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

在其他模块中,您需要使用以下命令将依赖项添加到此单独创建的工件:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <type>test-jar</type>
      <version>version</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project>