2013-06-27 16 views
6

Có thể tôi đang mất trí, nhưng sáng nay khi tôi nâng cấp lên Eclipse Kepler, tôi đã cố chạy thử nghiệm đơn vị cho nhiều dự án Eclipse cùng một lúc và thất bại. Tôi đã chọn nhiều dự án, mở menu nhấp chuột phải và tùy chọn "Chạy dưới dạng ..." đã biến mất.Chạy thử nghiệm JUnit từ nhiều dự án trong Eclipse

"Damn Kepler!" Tôi đã nghĩ và kích hoạt Juno cũ để thuyết phục bản thân rằng hành vi đã thay đổi. Tuy nhiên, nó cũng không hoạt động.

Tôi hiện đang đặt câu hỏi về sự tỉnh táo của mình về việc điều này có thực sự có thể xảy ra hay không. Manyother Câu hỏi tràn ngăn xếp và các câu hỏi khác sites đề xuất đây là một nhiệm vụ khó khăn, nếu không phải là không thể. Tuy nhiên, tôi chắc chắn rằng tôi đã làm điều này trong quá khứ gần đây mà nó khiến tôi một chút bị rách.

Vì vậy, ... điều này thậm chí có thể thực hiện được, hoặc trong Kepler hoặc Juno? Bất cứ ai có thể đề xuất một plugin phổ biến mà có thể đã kích hoạt tính năng đó (mà tôi không chính xác giả định là hành vi mặc định)?

Thông tin cơ bản: Tôi có dự án Maven đa mô-đun được quản lý qua m2e và dự kiến ​​tôi có thể chọn một số dự án và chạy tất cả các bài kiểm tra đơn vị.

+0

Bạn vẫn có cấu hình chạy có sẵn không? Nếu vậy, chỉ cần tạo cấu hình cho nó và chạy nó. – JREN

+0

@JREN Xin lỗi, có, tùy chọn "Chạy cấu hình ..." vẫn ở đó. Nhưng nếu tôi đi tuyến đường đó, tôi chỉ có thể chạy thử nghiệm cho một dự án, không phải nhiều dự án. –

+0

Sẽ có nút radio có sẵn cho biết "Chạy tất cả các kiểm tra trong dự án, gói hoặc thư mục nguồn đã chọn:" Nếu bạn có 2 dự án được chọn, nó sẽ chạy tất cả các kiểm tra đơn vị cho cả hai. Nó làm việc cho tôi ít nhất: - /. Tôi đang sử dụng Eclipse Juno – JREN

Trả lời

1

Bạn không thể chạy thử nghiệm cho nhiều dự án trong Eclipse, ít nhất bằng cách sử dụng các trình chạy bình thường. Tuy nhiên một số tùy chọn:

  1. Tạo một kịch bản/maven kiến ​​mà chạy tất cả mọi thứ
  2. Nếu bạn muốn chạy thử nghiệm của bạn mỗi khi bạn lưu, bạn có thể sử dụng Infinitest.

Từ trang web của Infinitest:

Infinitest là một thử Plugin liên tục cho Eclipse và IntelliJ. Mỗi lần thay đổi được thực hiện trên mã nguồn, Infinitest chạy tất cả các thử nghiệm có thể không thành công do những thay đổi này.

Infinitest có thể chạy tất cả các thử nghiệm trong tất cả các dự án.

5

Bạn có thể thực hiện các kiểm tra JUnit trên nhiều dự án sử dụng Classpath Suite. Nói chung, tất cả những gì bạn cần làm là:

  1. Tạo dự án Eclipse tùy thuộc vào tất cả các dự án bạn muốn thử nghiệm.
  2. Viết một bộ:

    @RunWith (ClasspathSuite.class)
    public class MySuite

Hãy xem trên bài viết này: Roger Rabbit - JUnit Tests Runner Across Multiple Projects, nó bao gồm một từng bước dụ và một mẫu mã.

1

Nếu bạn, thay vì sử dụng menu ngữ cảnh, sử dụng phím tắt (mặc định = Alt-Shift-XT), bạn sẽ nhận được hộp thoại sau:

enter image description here

Đây là một gợi ý về việc tại sao Eclipse không hiển thị tùy chọn trong menu - nó cho rằng không có thử nghiệm nào. Điều này rõ ràng là sai.

Đào qua Eclipse source code for JUnitLaunchShortcut (dòng 160-191), tôi thấy điều này:

private void launch(Object[] elements, String mode) { 
    try { 
     IJavaElement elementToLaunch= null; 

     if (elements.length == 1) { 
... 
     } 
     if (elementToLaunch == null) { 
      showNoTestsFoundDialog(); 
      return; 
     } 

Nó chỉ hoạt động nếu bạn chọn chính xác một lớp thử nghiệm.

Tầm nhìn tùy chọn trình đơn được điều khiển bởi các cấu hình org.eclipse.jdt.junit plugin (plugin.xml), và có cùng một vấn đề (dòng 221-234):

<contextualLaunch> 
    <enablement> 
     <with variable="selection"> 
      <count value="1"/> 
      <iterate> 
       <adapt type="org.eclipse.jdt.core.IJavaElement"> 
        <test property="org.eclipse.jdt.core.isInJavaProject"/> 
        <test property="org.eclipse.jdt.core.hasTypeOnClasspath" value="junit.framework.Test"/> 
        <test property="org.eclipse.jdt.junit.canLaunchAsJUnit" forcePluginActivation="true"/> 
       </adapt> 
      </iterate> 
     </with> 
    </enablement> 
</contextualLaunch> 

Các <count value="1"/> bit trong các hành vi bắt đầu như một chọn, và nó có nghĩa là cùng một điều: bạn phải có chính xác một mục được chọn hoặc mục menu sẽ không hiển thị.

Tôi nghĩ rằng chúng tôi đã tìm thấy các vấn đề :)

Tôi cũng kiểm tra lịch sử tập tin cho cả hai, và họ đã không được thay đổi kể từ tháng Chín năm 2006. Vì vậy, nếu bạn quản lý để làm điều này với một phiên bản mới hơn bạn rất có thể đã cài đặt một số plugin cho phép bạn làm điều đó.