2015-07-28 4 views
7

У меня есть отдых в REST API для загрузки Spring Boot, который я хочу протестировать. Я могу запускать тесты вручную в Eclipse (без maven и запуска приложения в качестве теста JUnit), и он отлично работает и отображает результаты, но mvn test не работает, как вы узнаете ниже.Maven не работает Весенние тесты загрузки

Вот мой POM файл:

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>org.demo</groupId> 
<artifactId>rest</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>UserRegistrationServices</name> 
<description>RESTful API</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.5.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 

    <!-- Junit --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- Spring dependencies --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-mongodb</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

    <!-- To deploy to external servlet container --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <!-- For Spring Boot testing --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>rest-assured</artifactId> 
     <version>2.4.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.jayway.restassured</groupId> 
     <artifactId>json-schema-validator</artifactId> 
     <version>2.4.1</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- For returning objects as JSON --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.5.4</version><!--$NO-MVN-MAN-VER$ --> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml</groupId> 
     <artifactId>jackson-xml-databind</artifactId> 
     <version>0.6.2</version> 
    </dependency> 

    <!-- To decode Base64 data --> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.10</version> 
    </dependency> 
</dependencies> 

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

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Это результат mvn test:

[INFO] Scanning for projects... 
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building UserRegistrationServices 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rest --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ rest --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 9 source files to C:\Users\pmandayam\git\UserRegistrationServices\target\classes 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rest --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory C:\Users\pmandayam\git\UserRegistrationServices\src\test\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ rest --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 1 source file to C:\Users\pmandayam\git\UserRegistrationServices\target\test-classes 
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ rest --- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.768 s 
[INFO] Finished at: 2015-07-28T12:07:41-05:00 
[INFO] Final Memory: 24M/212M 
[INFO] ------------------------------------------------------------------------ 

Вот сегмент моего TestController.java класса в SRC/тест/Java:

@Test 
    public void f_findByUsername() { 
     // Finding user with username 'user1username' 

     given().auth().basic("User1username", "Testpassword").when().get(
       "http://localhost:8080/users/get/ByUsername?username=User1username") 
       .then().assertThat().body("username", is("User1username")); 
    } 

В верхней части класса TestController У меня есть эти аннотации:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebAppConfiguration 
/* Tells the embedded Tomcat server to start on a random, open port */ 
@IntegrationTest("server.port:0") 
@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
public class TestController {....} 

Я не уверен, что случилось. У меня нет плагина surefire, но он выглядит так, как кажется.

ответ

22

Код в классе, который вы назвали TestController, не является контроллером, это тест, но в соглашении говорится, что это контроллер (возможно, он используется при тестировании). По умолчанию Surefire будет искать тесты, соответствующие *Test; переименуйте класс в ControllerTest.

+0

Важное заявление о схеме именования для тест-ориентированного программирования, в самом деле! –

+0

Работы! У меня была такая же проблема, и после переименования в «... Test» Maven начинает выполнять мои тесты. –

4

Даже если это не рекомендуется (не стандарт), вы можете настроить Maven безошибочный плагин тоже следующим образом:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <includes> 
       <include>**/Test*.java</include> 
      </includes> 
     </configuration> 
    </plugin> 
</plugins> 
Смежные вопросы