2012-01-19 2 views
0

잘못된 것을 알고 있는지 잘 모르겠습니다. 내 프로젝트에서 자동 단위 테스트를 수행하려고합니다.Jenkins와 Sonar (그리고 마침내 Maven)과 함께 작동하는 자동 단위 테스트를 얻을 수 없습니다.

Eclipse Plugin Project를 만들어 Maven Project로 변환했습니다. 프로젝트의 유일한 클래스를 테스트하는 JUnit 테스트 케이스 클래스를 만들었습니다. 모든 코드를 Maven 방식 (즉, src/main/java 기본 코드 및 src/test/java 테스트 코드)에 배치했습니다.

테스트 클래스를 src/test/java에 pluginmaventest.actions 패키지에 넣었습니다.

Eclipse에서 JUnit 테스트로 시작하면 테스트 케이스가 자동으로 실패합니다.

나는 SVN 저장소에서 프로젝트를 공유하고 Jenkins 작업 (Maven 2/3 프로젝트)을 만들었습니다. pom.xml 및 필요한 모든 타이코 종속성에 JUnit 종속성을 추가했습니다.

프로젝트 빌드가 성공적입니다. JUnit 테스트가 실패하여 실패하지 않아야합니까?

내가 목표로

mvn clean install 

mvn test 

을 시도했다. 심지어 -Dtest=SomeClassTest을 사용해 보았습니다. 빌드가 실패하지 않습니다.

이것은 분명히 단위 테스트가 컴파일되거나 수행되지 않는다는 것을 의미합니까? 아닙니다.

저는 젠킨스, 수중 음파 탐지기 및 단위 테스트를 통해 그립을 얻으려고합니다. 나의 순간 목표는 Jenkins와 함께 유닛 테스트를 실행 한 다음 Jenkins에 통합 된 Sonar로 코드 분석 및 테스트 범위를 실행하는 것입니다. 웹에서 포괄적이고 이해하기 쉬운 자습서 또는 사용 방법이 있습니까?

부칙 : 실패를 생성 할 수 있습니다

  • 내 젠킨스 설치 빌드, 그래서는 문제가되지 않습니다.
  • 내 테스트 클래스의 이름은 SomeClassTest입니다. 아, 이미 편집 했어.
  • 테스트 목표의 로컬 메이븐 호출도 결과를 생성하지 않습니다.

여기 내 전체 프로젝트 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>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> 

+0

그것은 당신의 pom.xml 파일에 오류처럼 들린다. 거인이 아니라면 질문에 포함시킬 수 있습니까? 또한 테스트 클래스의 전체 경로 (파일 이름 포함)를 지정할 수 있습니까? – jhericks

+0

Test 클래스를 어느 위치에 배치 했습니까? – khmarbaise

+0

src/test/java에서 pluginmaventest.actions라는 패키지에 있음 – danowar

답변

-1

는 테스트와 함께 작업 데모 예제를 프로젝트 설정을 확인 : http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-demo/itp01

+0

기다려서 Eclipse Plugin Project에서 Maven의 기존 프로젝트 레이아웃을 사용할 수 없습니까? 프로젝트에서 주요 출처와 테스트 출처를 함께 가질 수 없습니까? 별도의 프로젝트가 있어야합니까? – danowar

+0

모듈을 포함하는 상위 프로젝트가 있어야합니까? – danowar

+0

예를 통해 단위 테스트 작업을 수행하는 데 도움이되었습니다. 사람들은 소스 및 테스트를 위해 별도의 번들을 만듭니다 (테스트 번들을위한 조각 프로젝트 사용). 하위 모듈을 묘사하고 보일 (pom)을 만들면 작동합니다. – danowar

0

테스트가 실패 할 경우 젠킨스가 불안정한 빌드 (노란색 공)를 표시해야합니다. 대부분의 사람들은 더 우수한 정보를 제공하기 때문에이 상급자가 FAILED 상태 (빨간 공)라고 생각합니다. 작업 세부 정보 페이지의 모든 작업에 대한 테스트 통과/실패 그래프를 볼 수 있어야합니다.

장애가 무엇인지 (예를 들어, 온 전성 체크가 필요함)보고 싶다면, 호환되지 않는 코드를 작성하거나 유효하지 않은 Maven 목표를 호출 할 수 있습니다.

+0

Jenkins에서 빌드가 실패한 것을 본 적이 있으므로 문제가되지 않아야합니다. 노란색 공에 대한 정보를 보내 주셔서 감사합니다. – danowar

+0

tycho를 사용하면 노란 볼을 사용할 수없는 것 같습니다. tycho-surefire-plugin은 테스트가 실패했다는 것을 알려주지 만 전체 빌드 실패를 알립니다. – danowar

1

maven으로 빌드 할 때 빌드가 테스트를 로컬로 실행하는지 확인해야합니다.그렇다면 젠킨스가 SVN에서 업데이트를받지 못하는 것일 수 있습니다. 빌드를 업데이트하기보다는 체크 아웃하도록 구성하고 테스트가 실행되는지 확인하십시오. 그게 실패를 일으키지 않는다면 (또는 적어도 테스트가 실행되도록) Jenkins 빌드의 콘솔 출력을 살펴보고 빌드에 필요한 단서를 확인하십시오.

+0

로컬로 (m2eclipse로) 테스트 목표를 실행해도 아무런 반응이 없습니다. 왜 이런 일이 생기는지 진단하기 위해 내가 게시해야 할 것이 무엇입니까? – danowar

+0

일식 외에서 사용해보십시오. 명령 행. 또한, 당신의 시험은 정확하게 쓰여졌습니까? 그들은 적절한 주석을 가지고 있습니까? 아니면 무엇이든지 그들이 테스트임을 알고 있습니까? 즉 @Test – digitaljoel