2016-07-08 3 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».

My project Structure

+0

Почему у вас есть 2 зависимостей блок один тест и один компиляции? Удалите последний. –

+0

@ M.Deinum первая была автоматически добавлена ​​IntelliJ IDEA, когда я создал проект; но IntelliJ IDEA, кажется, запрещает причину установки области, когда я создал тест JUnit, компилятор заставляет меня добавить новую зависимость JUnit. Поэтому в основном, если я удалю вторую зависимость, компилятор больше не распознает импорт Junit и требует, чтобы я снова добавил вторую зависимость! Несмотря на то, что я пытался удалить первую зависимость, это не помогло. –

ответ

4

SystemOutRule является частью System Rules проекта Стефаном Биркнера. Он не является официальной частью JUnit, но открыт с открытым исходным кодом, свободно доступен и, кажется, поддерживается в хорошем состоянии.

Он опубликовал в Maven Central, и вы можете получить самую последнюю версию, добавив следующую зависимость в файл pom.xml:

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

Большое спасибо! –

Смежные вопросы