2012-01-24 33 views
20

tôi cần phải di chuyển một số src/kiểm tra/java để src/main/java theo NHẬN ĐỊNH này từ tài liệu maven-jar-plugin =>http://maven.apache.org/plugins/maven-jar-plugin/usage.htmlchắc chắn không khởi động thử nghiệm trong src/main/java

tôi đã làm như vậy bởi vì, tôi đã sử dụng các bài kiểm tra (helper) các lớp học trong một dự án khác trong phạm vi kiểm tra.

Vì vậy, tôi tạo my-dự án kiểm tra, di chuyển trong lớp học thử nghiệm, và cấu hình chắc chắn để xác định các lớp kiểm tra thư mục =>

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <testSourceDirectory>${basedir}\src\main\java\</testSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Nhưng khi tôi đưa ra thử nghiệm mvn, 0 xét nghiệm được thực hiện =>

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

Sự cố tương tự như vấn đề này =>Maven does not find JUnit tests to run nhưng giải pháp (định cấu hình plugin plugin chắc chắn) không hoạt động đối với tôi.

+0

Bạn đang cố gắng để chạy thử nghiệm hội nhập? Hơn nữa tại sao bạn định nghĩa testSourceDirectory? Và tại sao bạn lại sử dụng dấu gạch chéo ngược? – khmarbaise

+0

Như @khmarbaise đã đề cập, có thể nó xuất phát từ các dấu gạch chéo ngược. –

+0

Tôi đã thử $ {basedir}/src/main/java/hoặc src/main/java/nhưng nó giống nhau Chạy thử nghiệm: 0, Thất bại: 0, Lỗi: 0, Bỏ qua: 0 – Antoine

Trả lời

27

Cấu hình tốt cho maven Plugin chắc chắn hơn là =>

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory> 
        <testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

Results : 

Tests run: 20, Failures: 0, Errors: 0, Skipped: 0 
+3

Mặc dù điều này sẽ làm việc, nó không phải là một cấu hình tốt, vì nó không làm theo cách Maven làm việc. Nguồn phải nằm trong 'src/main/java'. Các lớp được biên dịch của chúng sẽ nằm trong 'target/classes'. Nguồn thử phải nằm trong 'src/test/java'. Các lớp được biên dịch của chúng sẽ nằm trong 'target/test-classes'. Đây là quy ước chính xác và cách này Chắc chắn sẽ hoạt động ngoài hộp. Đặt các bài kiểm tra của bạn vào cùng một thư mục vì các nguồn của mô-đun của bạn chỉ đơn giản là không đúng. – carlspring

+5

Tôi đã không đặt các lớp kiểm tra trong cùng một thư mục, tôi đã tạo ra dự án anoter được kết hợp bởi "-tests". Đó là khuyến nghị của maven-jar-plugin help => http://maven.apache.org/plugins/maven-jar-plugin/usage.html => "Cách tạo một lọ chứa các lớp thử nghiệm" => " cách " – Antoine

+0

Cảm ơn - điều này đã giúp tôi rất nhiều.Tôi đang phát triển một tập hợp của koans được (ban đầu) không kiểm tra đơn vị nhưng trong src/main (những người đã hoàn thành được trong src/test dir), vì vậy tôi cần để có thể gọi plugin JUnit chắc chắn trên mã trong src/main. Cảm ơn rất nhiều vì sự giúp đỡ này. – quux00

1

Vì các lớp thử nghiệm hiện đã được đặt trong src/main/java, có khả năng chúng sẽ được biên dịch trong giai đoạn biên dịch thành target/classes. Vì vậy, mặc dù chắc chắn được cấu hình để cho biết vị trí nguồn thử là src/main/java, nó vẫn sẽ tìm kiếm các lớp thử nghiệm trong target/test-classes, vì đây là vị trí mặc định cho các lớp thử nghiệm.

Bạn có thể thử chỉ định thông số testClassesDirectory phù hợp và xem liệu nó có hoạt động hay không.

Ngoài ra, tôi nghĩ bạn có thể đã hiểu sai đề xuất trong tài liệu plugin của trình cắm maven. Tôi không tin rằng họ đề xuất di chuyển các nguồn thử nghiệm đến src/main/java.

+0

OK tôi sẽ cố gắng như vậy. Tuy nhiên, các đường nối của plugin maven jar rõ ràng: "Di chuyển các tệp nguồn từ src/test/java mà bạn muốn chia sẻ từ dự án gốc tới src/main/java của dự án này. Cùng một kiểu chuyển động cũng được tính cho các tài nguyên. tất nhiên." – Antoine

+0

@Antoine. Bạn nói đúng. Tôi đã quen thuộc với 'cách dễ dàng', nhưng không bao giờ nhận ra' cách ưa thích'. Tôi cũng sẽ cập nhật câu trả lời. – Raghuram

Các vấn đề liên quan