2016-07-08 19 views
2

Ich benutze Maven, um mein Projekt und JUnit zu testen.
Als ich versuchte, Test mit SystemOutRule zu tun, konnte ich diese Klasse nicht finden und org.junit.contrib Paket nicht finden.konnte org.junit.contrib-Paket nicht finden

p.s. Meine JUnit ist die neueste Version, 4.12.

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

meine Test-Klasse

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(); 
    } 
} 

In CDPlayerTest.class, versuchte ich SystemOutRule zu verwenden, aber meine IDE (IntelliJ IDEA) erinnert mich dass diese Klasse nicht existiert und ich sie nicht in der "Maven Artifact Search" finden konnte.

My project Structure

+0

Warum Sie 2 Einheit Abhängigkeiten ein Test und eine Kompilierung haben? Entferne das letzte. –

+0

@ M.Deinum der erste wurde automatisch von IntelliJ IDEA hinzugefügt, als ich das Projekt erstellte; aber IntelliJ IDEA scheint die Ursache des Bereichs zu verbieten, als ich einen JUnit-Test erstellte, der Compiler zwingt mich, eine neue JUnit-Abhängigkeit hinzuzufügen. Wenn ich also die zweite Abhängigkeit lösche, erkennt der Compiler keine Junit-Importe mehr und fordert mich auf, die zweite Abhängigkeit erneut hinzuzufügen! Obwohl ich versuchte, die erste Abhängigkeit zu löschen, half das nicht. –

Antwort

4

SystemOutRule ist Teil des System Rules Projekt von Stefan Birkner. Es ist kein offizieller Teil von JUnit, aber es ist frei verfügbar und scheint gut gepflegt zu sein.

Es veröffentlicht Maven Central, und Sie können, indem Sie die folgende Abhängigkeit zu Ihrer pom.xml Datei die neueste Version erhalten:

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

Danke soooooo viel !!! –