2016-03-29 11 views
0

私はthis tutorialに従っており、試験部分に達しています。私はHelloControllerTestファイルだけでなく、src/test/java/hello/のみHelloControllerTestテストランで私のテストディレクトリ内HelloControllerITファイルを作成するとき。ただし、2番目のファイルの名前をTestという末尾に変更すると、たとえばHelloController2Testのようになります。私はmvn clean verifyでMavenビルド中にコマンドラインからテストを実行しています。私はOSX上でMaven 3.3.9を実行しています。どのテストを実行するかをMavenにどのように伝えますか?

Iした2つの主要な質問:どのようにMavenを実行するテストを知っていますか?さらに重要なのは、Mavenに他のテストを実行するように指示する方法は?以下は私のpom.xmltutorialから直接取得されています

<?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>org.springframework</groupId> 
    <artifactId>gs-spring-boot</artifactId> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.3.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 


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

</project> 

答えて

2

maven-surefire-plugin意志、のパターンに従うすべてのテストを実行するためのby default、試みTest*.javaまたは*Test.javaまたは*TestCase.javaである。それは、ユニットテストではありません標準Mavenの慣習、などによって、それは統合テストで、非常に意図的にあなたのHelloControllerITを無視します。 maven-surefire-pluginは、すべてのMavenプロジェクトでデフォルトで有効になっています。

命名パターンIT*.javaまたは*IT.javaまたは*ITCase.javaによって示さ統合テストを実行するために使用される別のプラグイン、maven-failsafe-plugin、(by default)があります。これは、testフェーズではなく、ビルドのintegration-testフェーズで実行されます。しかし、maven-surefire-pluginとは異なり、明示的に有効にする必要があります。 (なぜこれがわからないのですか)

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.19.1</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>integration-test</goal> 
      <goal>verify</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

あなたのプロジェクトにmaven-failsafe-pluginを追加すると、統合テストはうまく動くはずです。

0

1)どのようにMavenを実行するテストを知っていますか?デフォルトでは、mavenはすべてのテストを実行します。 Mavenが見つけたすべてのテスト。

2)どのように私は他のテストを実行するために、Mavenを教えていますか?特定のテストクラス(例えばHelloController2Test)を実行するには、この操作を行うことができます。

mvn -Dtest=HelloController2Test test 

Reference doc here

One other explanation(from the well known site MKYong)

0

Mavenの確実なプラグインは、テストを実行する責任があります。 Inclusions and Exclusions of Tests

:以下のリンクは、あなたの質問に答える必要があります
関連する問題