2017-10-31 29 views
0

プロジェクトテストには、他のプロジェクトのJUnitテスト(ビルダーテストなど)で使用されるすべてのクラスが含まれています。 project-testのpom.xmlに私はMockitoとJunitを追加しました。依存関係の依存関係の使用

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>br.com.company</groupId> 
    <artifactId>project-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <repositories> 
     <repository> 
      <id>central</id> 
      <name>Maven Central</name> 
      <url>http://repo1.maven.org/maven2/</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-all</artifactId> 
      <version>1.10.19</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

</project> 

多くのプロジェクトは、JUnitのとMockitoの依存関係をインポートするためのプロジェクト・テストを使用する必要があることに注意してください。プロジェクトのテスト依存性のpom.xmlを持ってフー・プロジェクト:私はMVN との.jarをクリーンインストールを実行

import org.junit.Assert; 
import org.junit.Test; 
import org.mockito.Mockito; 

<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>br.com.company</groupId> 
    <artifactId>foo</artifactId> 
    <packaging>war</packaging> 
    <name>foo</name> 
    <version>1.0</version> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <!-- <defaultGoal>install</defaultGoal> --> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
       <version>3.5.1</version> 
      </plugin> 

     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <!-- Nexus config --> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>br.com.company</groupId> 
      <artifactId>project-test</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
</project> 

それはのようないくつかのパッケージをインポートする必要があります/home/danielamorais/.m2/repository/br/com/company/project-test/1.0-SNAPSHOTが存在します。 FooプロジェクトでJunitとMockitoをインポートできないのはなぜですか?

Error:(8, 17) java: package org.junit does not exist

+1

彼らはのテスト依存関係だから君はrプロジェクトテストプロジェクト。つまり、彼らはこのプロジェクトをテストするためだけに使用されるはずであり、したがって、プロジェクトテストjarファイルのクラスの依存関係ではありません。ところで、私はあなたがjunitとmockitoに依存するはずだから、どのようにプロジェクトテストのクラスをコンパイルしたのでしょうか?テストクラスパスにしかありません。 –

+0

ありがとう@JBNizet。 project-testのクラスは、JUnitまたはMockitoをインポートしません。実際には、このクラスはこのビルダーです:http://www.natpryce.com/articles/000714.html(私はそれを正しく説明していないと思います) –

答えて

0

これらはテストスコープの依存関係であり、テストの実行時にのみ適用されます。

mvn testを実行してテストしてください。

mvn -Dtest=YourTestCase test

0

同様JB NizetNRJ言及、それはスコープの問題です。 Maven documentation on the subjectを確認してください。

私はちょうどあなたの代わりに、共通の依存関係をグループ化するためのまったく新しいプロジェクトを作成する、単純かつ一般的な方法は、あなたの他のPOMはそれを継承することができますPOM親を作成することであることを追加したいです。その詳細についてはhereを参照してください。examplesがあります。

0

アーティファクトが別のアーティファクトとして依存関係として宣言すると、testスコープの依存関係は宣言アーティファクトで継承されません。

複数の成果物の共通の依存関係(および同じ共通設定)を定義する場合は、次のように設計された機能を使用します。
一般的な設定を保持する親のpomを定義し、2つの成果物をいくつかの子モジュールにします。
必要に応じて、親pomをアグリゲータ/マルチモジュール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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>br.com.company</groupId> 
    <artifactId>foo-parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <repositories> 
     <repository> 
      <id>central</id> 
      <name>Maven Central</name> 
      <url>http://repo1.maven.org/maven2/</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-all</artifactId> 
      <version>1.10.19</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

</project> 

プロジェクトテスト(瓶)

<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> 

    <parent> 
     <groupId>br.com.company</groupId> 
     <artifactId>foo-parent</artifactId> 
     <version>1.0</version> 
    </parent> 

    <artifactId>project-test</artifactId> 

</project> 

のfoo(戦争アプリ)

<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> 

    <parent> 
     <groupId>br.com.company</groupId> 
     <artifactId>foo-parent</artifactId> 
     <version>1.0</version> 
    </parent> 

    <packaging>war</packaging> 
    <artifactId>foo</artifactId> 


</project>