2016-07-08 83 views
2

私はプロジェクトをビルドするためにmavenを使用し、テストするにはJUnitを使用します。
SystemOutRuleでテストしようとしたときに、このクラスが見つからず、org.junit.contribパッケージが見つかりませんでした。org.junit.contribパッケージを見つけることができません

p.s.私のJUnitは最新バージョン4.12です。

私のMavenの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/maven-v4_0_0.xsd"  

<modelVersion>4.0.0</modelVersion> 
<groupId>com.Quentin.test</groupId> 
<artifactId>test</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>test Maven Webapp</name> 
<url>http://maven.apache.org</url> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.6.RELEASE</version> 
</parent> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.jayway.jsonpath</groupId> 
     <artifactId>json-path</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.3.1.RELEASE</version> 
     <scope>runtime</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>test</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

<repositories> 
    <repository> 
     <id>spring-snapshots</id> 
     <url>http://repo.spring.io/snapshot</url> 
     <snapshots><enabled>true</enabled></snapshots> 
    </repository> 
    <repository> 
     <id>spring-milestones</id> 
     <url>http://repo.spring.io/milestone</url> 
     <snapshots><enabled>true</enabled></snapshots> 
    </repository> 
</repositories> 

<pluginRepositories> 
    <pluginRepository> 
     <id>spring-snapshots</id> 
     <url>http://repo.spring.io/snapshot</url> 
    </pluginRepository> 
    <pluginRepository> 
     <id>spring-milestones</id> 
     <url>http://repo.spring.io/milestone</url> 
    </pluginRepository> 
</pluginRepositories> 

私のテストクラスCDPlayerTest.classで

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

import static org.junit.Assert.assertNotNull; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = CDPlayerConfig.class) 
public class CDPlayerTest { 

    @Rule 
    public final SystemOutRule log = new SystemOutRule.enableLog(); 

    @Autowired 
    private MediaPlayer player; 

    @Autowired 
    private CompactDisc disc; 

    @Test 
    public void checkNotNull() { 
     assertNotNull(player); 
     assertNotNull(disc); 
    } 

    @Test 
    public void play() { 
     player.play(); 
    } 
} 

、私はSystemOutRuleを使用しようとしましたが、私のIDE(のIntelliJ IDEAは)私を思い出させますこのクラスは存在せず、 "Maven Artifact Search"で見つけることができませんでした。

My project Structure

+0

?最後のものを削除します。 –

+0

@ M.Deinum最初のプロジェクトは、プロジェクトを作成したときにIntelliJ IDEAによって自動的に追加されました。 IntelliJ IDEAはJUnitテストを作成したときにスコープ設定の理由を禁止しているようだが、コンパイラは新しいJUnit依存関係を追加するように強制する。したがって、基本的に2番目の依存関係を削除した場合、コンパイラはJunitのインポートを認識せず、2番目の依存関係を再度追加する必要があります。私は最初の依存関係を削除しようとしましたが、それは助けになりませんでした。 –

答えて

4

SystemOutRuleステファン・バークナーによってSystem Rulesプロジェクトの一部です。これはJUnitの公式な部分ではありませんが、オープンソースであり、自由に利用でき、よく管理されているようです。

それは、Mavenの中央に公開されます、そして、あなたのpom.xmlファイルに次の依存関係を追加することで、最新バージョンを取得することができます:あなたは2つの単位の依存関係一つのテストと1コンパイルしなければならないのはなぜ

<dependency> 
    <groupId>com.github.stefanbirkner</groupId> 
    <artifactId>system-rules</artifactId> 
    <version>1.16.0</version> 
    <scope>test</scope> 
</dependency> 
+1

sooooooありがとう! –

関連する問題