2016-07-08 122 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> 

我的测试类

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

在CDPlayerTest.class,我试图用SystemOutRule,但我的IDE(IntelliJ IDEA的)让我想起了这个类不存在,我在“Maven Artifact Search”中找不到它。

My project Structure

+0

?删除最后一个。 –

+0

@ M.Deinum在创建项目时第一个由IntelliJ IDEA自动添加;但是当我创建一个JUnit测试时,IntelliJ IDEA似乎禁止范围设置原因,编译器迫使我添加一个新的JUnit依赖项。所以基本上,如果我删除了第二个依赖项,编译器不再识别Junit导入,并要求我再次添加第二个依赖项!尽管我试图删除第一个依赖项,但它并没有帮助。 –

回答

4

SystemOutRuleSystem Rules项目由斯特凡·伯克纳的一部分。它不是JUnit的官方组成部分,但开源,免费提供,似乎保持良好。

它发布到Maven的中央,你可以得到通过添加以下依赖你pom.xml文件的最新版本:为什么你有2个单元相依一个测试,一个编译

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

谢谢soooooo多!!! –