0

不知道是不是我理解错了。我试图让自动单元测试在我的项目中工作。

我制作了一个 Eclipse 插件项目并将其转换为一个 Maven 项目。我做了一个 JUnit 测试用例类来测试项目中唯一的类。我以 Maven 方式放置每个代码(即 src/main/java 主代码和 src/test/java 测试代码)。

我将测试类放在 src/test/java 的一个名为 pluginmaventest.actions 的包中。

如果在 Eclipse 中作为 JUnit 测试启动,测试用例会自动失败。

我在 SVN 存储库中共享了该项目并做了一份 Jenkins 工作(Maven 2/3 项目)。我将 JUnit 依赖项添加到 pom.xml 和所有必要的 tycho 依赖项。

项目构建成功。它不应该因为我的 JUnit 测试失败而失败吗?

我试过

mvn clean install

mvn test

作为目标。我什至尝试使用-Dtest=SomeClassTest. 构建永远不会失败。

这显然意味着单元测试既不编译也不执行,不是吗?

我只是想掌握 Jenkins、Sonar 和单元测试。我目前的目标是让单元测试与 Jenkins 一起运行,然后尝试让代码分析和测试覆盖率与集成到 Jenkins 中的 Sonar 一起运行。网络上是否有全面且易于理解的教程或操作方法?

附录:

  • 我的 Jenkins 安装可能会产生失败的构建,所以这不应该是问题。
  • 我的测试类真正命名为 SomeClassTest。哦,oers 已经编辑过了。
  • 测试目标的本地 Maven 调用也不会产生任何结果。

这是我的整个项目 pom.xml。(没有surefire maven也没有产生任何输出)

<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.maven.plugin</groupId>
<artifactId>pluginmaventest</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>Bla</name>
<packaging>eclipse-plugin</packaging>

<properties>
    <tycho-version>0.13.0</tycho-version>
</properties>
<repositories>
    <repository>
      <id>indigo</id>
      <layout>p2</layout>
      <url>http://download.eclipse.org/releases/indigo/</url>
    </repository>
</repositories>
<dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho-version}</version>
        <type>maven-plugin</type>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
    </dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.11</version>
    </plugin>
  </plugins>
</pluginManagement>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
  </plugin>
  <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-maven-plugin</artifactId>
        <version>${tycho-version}</version>
        <extensions>true</extensions>
    </plugin>
    <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho-version}</version>
        <configuration>
            <resolver>p2</resolver>
            <environments>
                <environment>
                    <os>linux</os>
                    <ws>gtk</ws>
                    <arch>x86</arch>
                </environment>
                <environment>
                    <os>linux</os>
                    <ws>gtk</ws>
                    <arch>x86_64</arch>
                </environment>
                <environment>
                    <os>win32</os>
                    <ws>win32</ws>
                    <arch>x86</arch>
                </environment>
                <environment>
                    <os>win32</os>
                    <ws>win32</ws>
                    <arch>x86_64</arch>
                </environment>
                <environment>
                    <os>macosx</os>
                    <ws>cocoa</ws>
                    <arch>x86_64</arch>
                </environment>
            </environments>
        </configuration>
    </plugin>
</plugins>

4

3 回答 3

1

当您使用 maven 构建时,您应该确保构建在本地运行测试。如果是这种情况,那么可能是 Jenkins 没有从 SVN 获取更新。将其配置为签出而不是更新构建,并查看它现在是否运行测试。如果这不会导致失败(或至少导致测试运行),那么请查看 Jenkins 构建的控制台输出,看看您的构建中有哪些线索。

于 2012-01-19T17:39:47.920 回答
0

如果测试失败,Jenkins 应该将构建标记为 UNSTABLE(黄色球)。大多数人认为这优于 FAILED 状态(红球),因为它提供了更多信息。您应该能够在作业详细信息页面上看到所有作业的测试通过/失败图表。

如果你想看看失败是什么样子(比如你想要一个健全性检查),你可以尝试提交不可编译的代码,或者调用无效的 Maven 目标。

于 2012-01-19T17:11:41.133 回答
-1

通过测试检查您的项目设置与工作演示示例:http: //git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-demo/itp01

于 2012-01-20T08:12:14.953 回答