2015-07-28 21 views
7

Tôi có một API REST khởi động lại Spring mà tôi muốn kiểm tra. Tôi có thể chạy các bài kiểm tra thủ công trong Eclipse (không có maven và bằng cách chạy ứng dụng như kiểm tra JUnit) và nó chạy tốt và hiển thị kết quả, nhưng mvn test không "hoạt động" như bạn sẽ tìm hiểu bên dưới.Maven không chạy thử nghiệm Khởi động mùa xuân

Đây là tập tin POM của tôi:

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> 

Đây là kết quả của 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] ------------------------------------------------------------------------ 

Đây là một phân đoạn của lớp TestController.java tôi trong src/kiểm tra/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")); 
    } 

Ở phía trên cùng của lớp TestController tôi có những chú thích:

@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 {....} 

Tôi không chắc chắn whats sai. Tôi không có plugin chắc chắn nhưng nó đang tìm kiếm nó.

Trả lời

22

Mã trong lớp bạn đặt tên TestController không phải là bộ điều khiển, nó là một thử nghiệm, nhưng quy ước nói rằng đó là bộ điều khiển (có thể được sử dụng trong thử nghiệm). Theo mặc định, Surefire sẽ tìm kiếm các thử nghiệm phù hợp với *Test; đổi tên lớp thành ControllerTest.

+0

tuyên bố quan trọng về lược đồ đặt tên cho chương trình thử nghiệm điều khiển, quả thật vậy! –

+0

Hoạt động! Tôi đã có cùng một vấn đề và sau khi đổi tên thành "... Kiểm tra" Maven bắt đầu thực hiện các bài kiểm tra của tôi. –

4

Thậm chí nếu điều này không được khuyến khích (như không tiêu chuẩn), bạn có thể cấu hình các plugin maven chắc chắn hơn quá, như sau:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <includes> 
       <include>**/Test*.java</include> 
      </includes> 
     </configuration> 
    </plugin> 
</plugins> 
Các vấn đề liên quan