如何让单元测试在Maven Tycho构建中运行?

时间:2016-04-05 16:00:27

标签: java eclipse maven junit tycho

我过去做了很多工作,编写了在“常规”Maven版本中运行的单元测试, 使用JUnit和Mockito(以及PowerMock)。我现在正在开发一个Eclipse插件代码库,它使用Maven Tycho构建。

总的来说,这是一个多项目构建,但我只是将单元测试添加到其中一个插件项目中(暂时)。

我听说过tycho-surefire,但这看起来很复杂,听起来更像是支持集成测试,而不是单元测试。我猜我可能别无选择,只能使用它,但到目前为止我还没有尝试整合它。

我尝试从Maven获取JUnit和Mockito工件,然后使用maven-dependency-plugin来获取可在清单的Bundle-Classpath属性中引用的工件。

当我运行构建时,tycho-compiler-plugin我看到正在编译105个源文件,其中包含src/main/javasrc/test/java中的所有类。  它无法compile测试类,因为它无法找到Mockito类,即使我使用-X运行构建时,它也会显示mockito-all个工件。 依赖树。

我可以在这做什么?

2 个答案:

答案 0 :(得分:2)

经过大量痛苦的Maven试验&错误我在this website上挣扎,这提供了一种在Maven-Tycho设置中使用单元测试的简单方法。

这里,使用JUnit时pom.xml的重要部分(可能与Mockito相似):

<testSourceDirectory>src/test/java</testSourceDirectory>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <executions>
      <execution>
        <id>test</id>
        <phase>test</phase>
        <configuration>
          <includes>
            <include>**/*Test.java</include>
          </includes>
        </configuration>
        <goals>
          <goal>test</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
        <id>compiletests</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

以某种方式命名所有测试,以便以*Test.java结束。运行mvn test以执行所有可用的单元测试。

答案 1 :(得分:-1)

你必须使用junit和Mockito作为osgi包

我认为这个问题回答了详细here

我希望这会有所帮助。