Eclipse Không tìm thấy thử nghiệm nào sử dụng JUnit 5 do NoClassDefFoundError cho LauncherFactory gây ra


95

Vấn đề

Bất cứ khi nào tôi chạy thử nghiệm JUnit dự án của mình (sử dụng JUnit 5 với Java 9 và Eclipse Oxygen 1.a), tôi gặp phải sự cố rằng nhật thực không thể tìm thấy bất kỳ thử nghiệm nào.

Mô tả

Trong cấu hình chạy, eclipse thậm chí không thể tìm thấy phương thức được chú thích bằng @Test, mà thay vào đó chỉ hiển thị cho tôi " (tất cả các phương pháp) ". Hình ảnh sau đây hy vọng cung cấp một cái nhìn tốt hơn về thiết lập của tôi:

https://imgur.com/a/FTe9c

Đầu ra bảng điều khiển:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

Những gì tôi đã cố gắng cho đến nay

Tôi đã thử rồi

  • để xóa thư mục thử nghiệm khỏi đường dẫn xây dựng và thêm lại.
  • để bắt đầu kiểm tra bằng cách di chuột qua phương thức được chú thích bằng @Test và sau đó nhấp vào "Chạy như Thử nghiệm JUnit".
  • xóa JUnit khỏi Buildpath và thêm lại
  • khởi động lại nhật thực
  • Tôi cũng đã chuyển toàn bộ dự án từ máy này sang máy khác và thử nó với cài đặt nhật thực được cung cấp ở đó
  • để đổi tên phương pháp thử nghiệm.
  • để gõ lại chú thích @Test

Một số bước này có thể được tìm thấy ở đây , nhưng cuối cùng vấn đề vẫn còn.


Nhưng bạn đã cố gắng tìm ra sự khác biệt như đã nêu trong câu trả lời cho điều này - stackoverflow.com/questions/34413/… ?
Naman

Câu trả lời:


20

Bạn gặp phải lỗi Eclipse 525948 đã được sửa và sẽ được xuất bản trong bản phát hành sắp tới Oxygen.3 (4.7.3), ngày 21 tháng 3 năm 2018.

Để giải quyết vấn đề này, hãy đặt mã thử nghiệm của bạn vào một dự án riêng và thêm dự án đang thử nghiệm vào đường dẫn mô-đun, nhưng không thêm a module-info.javavào dự án thử nghiệm của bạn. Với cách đặt tên dự án, lớp và mô-đun của bạn, nó sẽ trông giống như sau:

nhập mô tả hình ảnh ở đây

Xem thêm video của tôi cho thấy Java 9 và JUnit 5 trong Eclipse Oxygen.1a đang hoạt động


1
@nullpointer Ý tôi là tạo một dự án Java mới không phải là mô-đun (không có module-info.java). Trong Eclipse, một dự án Java có một thư mục đầu ra duy nhất và vì vậy nó chỉ có thể chứa một hoặc không có module-info.java. Nhưng bạn có thể thêm mô-đun vào đường dẫn mô-đun của dự án mặc dù dự án không phải là mô-đun (không có module-info.java).
howlger

1
@ShadowDragon nhược điểm với hack này là chúng ta cần một cái tên gói khác nhau cho các lớp kiểm tra, do đó không thể làm gói tin kiểm tra
Kleopatra

7
Tôi vừa cài đặt Oxy.3 (4.7.3) và sự cố vẫn tiếp diễn.
user118967

2
@chomp Nếu bạn có 2018-09, thì đó là một vấn đề khác ngay cả khi các triệu chứng trông giống nhau. Nếu không tìm thấy bài kiểm tra nào, điều này chủ yếu là do đường dẫn classpath / module không chính xác ( Dự án> Thuộc tính: Đường dẫn xây dựng Java ).
howlger 10/1218

2
@howlger Cảm ơn. Sau khi nâng cấp lên phiên bản mới nhất, vấn đề này đã biến mất. Cảm ơn một lần nữa vì sự giúp đỡ của bạn :).
Datta

123

Tôi đã khắc phục sự cố bằng cách nhấp chuột phải vào kiểm tra và chọn 'Chạy cấu hình' và thay đổi lựa chọn "Người chạy thử nghiệm:" thành 'JUnit 4' như được hiển thị ở đây:

Ảnh chụp màn hình của các cấu hình chạy

Tôi đã chạy thử nghiệm một lần nữa và nó hoạt động.


12
Thật buồn cười khi chọn "JUnit4" trong các cấu hình đang chạy khi sử dụng JUnit5. Tôi sẽ không gọi đó là một giải pháp tốt mà tôi có thể dựa vào khi đang xử lý một dự án lớn.
Levent Divilioglu 18/09/18

1
Tôi cũng thấy giải pháp này đáng ngờ, thậm chí nó còn thiếu lời giải thích tại sao nó hoạt động và những rủi ro mà người ta có thể gặp phải.
Amadán

Nếu việc này không giải quyết được vấn đề cho bạn thì hãy chuyển đến tab classpath trên cùng cửa sổ và thêm JUnit vào Thư viện Bootstrap.
Abhi

Cảm ơn; chọn JUnit 4 đã giải quyết vấn đề của tôi. Hiện tại, đó là cách đơn giản nhất để giải quyết vấn đề.
Tes

Theo ý kiến ​​của tôi, giải pháp này ít xâm lấn hơn, tức là không sửa đổi mã nguồn.
Rafael Rocha

63

Tôi gặp vấn đề tương tự với STS 3.9.1. Nó có vẻ giống như một lỗi Eclipse, tuy nhiên, để khắc phục điều này, bạn có thể thêm phần phụ thuộc thử nghiệm vào junit-platform-launcherdự án của mình ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Đây là cách tôi đã làm cho dự án của mình sử dụng gradle:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

tệp gradle.properties:

junit5MinorVersion=1.0

Tôi tin rằng điều tương tự cũng áp dụng nếu bạn thấy ngoại lệ này khi sử dụng IntelliJ IDEA.


1
Nếu sử dụng gradle thường thì nó sẽ chuyển sang build.gradle. Nếu bạn đang sử dụng maven thì đó là pom.xml. Tuy nhiên, định dạng cho maven là khác nhau.
Andrii Karaivanskyi 21/02/18

1
Điều đó đã sửa nó cho tôi. Cảm ơn!
Chris

4
Đây là đoạn mã pom.xml để đi vào bên trong <dependencies>: <dependency> <groupId> org.junit.jupiter </groupId> <artifactId> junit-jupiter-engine </artifactId> <version> 5.1.0 </version> <scope> test </scope> </dependency> <dependency> <groupId> org.junit.platform </groupId> <artifactId> junit-platform-launcher </artifactId> <version> 1.1.0 </version> < scope> test </scope> </dependency>
user118967

1
Vẫn thêm junit-platform 1.1.0 không hoạt động với tôi. Nó cho thấy cùng một thông báo "không có xét nghiệm tìm thấy với Á hậu kiểm tra sử dụng JUnit 5" "
P Satish Patro

2
@PSatishPatro Sau khi thêm phần trên. Bạn cần phải chạy cấu hình cho trường hợp thử nghiệm Junit đó và sau đó đi đến tab Classpath-> Nâng cao-> Thêm Thư viện-> OK-> Junit-> Kết thúc. Sau đó đi trước và Run it.This sẽ thêm thư viện trong quá trình thực của Junit
Jaison Varghese

27

Trong trường hợp của tôi, vấn đề là do chính tôi và không có IDE nào như Eclipse. Tôi đã nhập lớp Kiểm tra JUnit 4.

Vì vậy, KHÔNG nhập cái này:

import org.junit.Test  // JUnit 4

Nhưng NÊN nhập cái đó:

import org.junit.jupiter.api.Test // JUnit 5

Tôi đã chuyển đổi giữa JUnit 4 và 5 vì dự án hiện tại đang sử dụng JUnit 5, nhưng khi báo cáo lỗi cho Hibernate, v.v. Tôi cần chuyển sang JUnit 4. Tôi đã vô tình trộn lẫn các lần nhập. 🤦‍♂️
Kawu

20

Các câu trả lời cho đến nay không giải quyết được vấn đề chia sẻ mã với những người không nhất thiết phải sử dụng Eclipse. Đây là một đề xuất. Điều quan trọng là sử dụng một hồ sơ maven để giải quyết Trường hợp Eclipse.

Nó giả sử bạn đã xác định một junit5.versionthuộc tính trong pom của mình như:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

sau đó trong profilesphần thêm những điều sau:

<profiles>
    <profile>
        <id>eclipse</id>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit5.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                    <version>1.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </profile>
</profiles>

Tất cả những gì bạn phải làm sau đó là chọn hồ sơ trong Eclipse cục bộ của bạn: Nhấp chuột phải vào dự án của bạn và chọn Maven > Select Maven Profiles...(hoặc nhấn Ctrl+ Alt+ P), sau đó kiểm tra hồ sơ "nhật thực" mà chúng tôi vừa tạo.

Lựa chọn hồ sơ Maven

Với điều đó bạn đã hoàn thành. Eclipse của bạn sẽ chạy thử nghiệm Junit 5 như mong đợi, nhưng cấu hình bạn đã thêm sẽ không gây ô nhiễm cho các bản dựng khác hoặc IDE khác


12

Thêm phụ thuộc maven này với JUnit Jupiter (v.5.5.1) sẽ giải quyết được vấn đề.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>

Tôi đã có một dự án JAR được tạo cho Spring Boot 2.x mang đến JUnit 5. Tôi đã thêm phần phụ thuộc này và có vẻ như nó đã sửa được. Cảm ơn!
David Bradley

12

SỬA ĐƠN GIẢN: (Thêm Thư viện JUnit 5)

HƯỚNG DẪN:

  • Nhấp chuột phải vào dự án -> Đường dẫn xây dựng -> Định cấu hình Đường dẫn xây dựng
  • Trong cửa sổ bật lên -> Thêm Thư viện -> JUnit -> JUnit 5 -> Kết thúc -> Áp dụng
  • Bạn sẽ thấy Thư viện JUnit 5 (và các lọ của nó) được thêm vào dự án của bạn
  • Nhấp chuột phải vào dự án -> Maven -> Cập nhật dự án -> OK

9

Không có giải pháp nào giúp được:

Vấn đề là Eclipse 2018-12 có hỗ trợ cho JUnit 5.3.1. Nếu bạn khởi động nó với một phiên bản trước đó, nó sẽ không thành công.

Vì vậy, hãy đảm bảo rằng bạn sử dụng ít nhất 5.3.1.

5.4.0 cũng hoạt động.

Trong trường hợp pom mẹ của bạn là Spring Boot, bạn cần đảm bảo (trong quản lý phụ thuộc) rằng junit-jupiter-api được đặt thành cùng một phiên bản. Bạn không cần junit-platform-runner hoặc -launcher !


2
Cảm ơn vì tiền hỗ trợ. Tôi đang sử dụng 2019-3 và tôi đã thêm thuộc tính <junit-jupiter.version>5.4.1</junit-jupiter.version>để ghi đè phiên bản được sử dụng trong khởi động mùa xuân (2.1.3.RELEASE).
Ritesh

3
Đây là cái đã sửa nó cho tôi. Tôi đã xóa phần phụ thuộc -launcher và nó bắt đầu hoạt động. (nhật thực 2019-09 và ngày 5.4.2 tháng 6)
Raymond

Giải pháp này cũng phù hợp với tôi. Tuy nhiên, trong trường hợp của tôi, tôi đã thay đổi từ 5.3.1 thành 5.5.1 và junit-platform-engine thành 1.5.1.
Arwan Khoiruddin

1
CÁi này đã sửa nó giúp tôi. Trong các bài kiểm tra eclipse 2020-03 không bắt đầu với phiên bản 5.5.2 junit mà với 5.6.0. Là một bản cập nhật chung cho câu trả lời của bạn: Có thể cần phải sử dụng ít nhất phiên bản junit mà eclipse sử dụng.
Lars Briem

8

Sau câu trả lời của Andrii Karaivanskyi, đây là tuyên bố của Maven POM:

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

CẬP NHẬT

Theo nhận xét của Alexander Wessel, bạn có thể sử dụng org.junit: junit-bom như được mô tả trong câu trả lời của anh ấy cho câu hỏi Eclipse Không tìm thấy thử nghiệm nào khi sử dụng JUnit 5 do NoClassDefFoundError gây ra cho LauncherFactory .


1
Không khai báo thuộc tính cho phiên bản jupiter và nền tảng, hãy sử dụng BOM thay thế . Về cơ bản, thêm phần phụ thuộc vào BOM trong thẻ dependencyManagement với scope=import type=pom, sau đó thêm phần phụ thuộc vào junit-platform-launcher và junit-jupiter-engine trong phạm vi thử nghiệm mà không đưa ra phiên bản trong phần phụ thuộc. BOM sẽ luôn đảm bảo rằng bạn chỉ có một phiên bản của JUnit Platform và Jupiter trên classpath và các phiên bản tương ứng là những phiên bản dành cho bạn (ví dụ: 5.2.0 với 1.2.0).
Alexander Wessel

@AlexanderWessel Tôi không có BOM. Đây chỉ là một đoạn trích ví dụ mà người ta phải khai báo các phụ thuộc với Maven, cho dù điều này có thể ở đâu.
Gerold Broser

1
nó không ướt hơn bạn có (hay đúng hơn là dự án của bạn có) một BOM. Tôi đã giải thích rằng bằng cách nhập BOM mà JUnit 5 cung cấp , bạn có thể đảm bảo các phiên bản Junit Jupiter và Junit Platform tương thích và bạn sẽ không cần phải khai báo một phiên bản trong các phần phụ thuộc riêng lẻ, do đó cũng không cần phải khai báo phiên bản tính chất. Để được rõ ràng: ví dụ bạn làm tốt công việc. Nhưng nhập JUnit BOM thì thanh lịch hơn một chút (theo ý kiến ​​khiêm tốn của tôi) và trong một số trường hợp, an toàn hơn.
Alexander Wessel


7

FYI, một nguyên nhân khác của "Không tìm thấy thử nghiệm nào bằng cách sử dụng junit5" là (vô tình hoặc cố ý) tuyên bố các trường hợp thử nghiệm là "riêng tư":

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

Họ cần phải được công khai.


5

Tôi cũng gặp phải vấn đề tương tự, bạn chỉ cần thêm thư viện, Thư viện Junit đã được cung cấp cùng với Eclipse nên bạn chỉ cần làm theo bên dưới

Đường dẫn xây dựng> Định cấu hình Đường dẫn xây dựng> thư viện> Thêm thư viện> JUnit> Tiếp theo> kết thúc

Nó phù hợp với tôi


Nó hoạt động tốt trong nhật thực. Phiên bản: 2020-06 (4.16.0) Id bản dựng: 20200615-1200
OJVM

4

Ngay từ đầu thông báo lỗi cho bạn biết rằng không tìm thấy lớp: NoClassDefFoundErrorđiều đó có nghĩa là PATH to junit là vấn đề.

  1. Nhấn chuột phải vào thư mục dự án và chọn Thuộc tính HOẶC chọn thư mục dự án và nhấn tổ hợp cmd + i.

  2. chọn từ danh sách "Java Build Path".

  3. chọn tab "Thư viện"
  4. Nếu JUnit 5 (hoặc JUnit 4) được thêm vào "Đường dẫn mô-đun", hãy chọn "JUnit 5" và nhấn Xóa.
  5. chọn "Classpath", nhấn "Add Library ...".
  6. từ cửa sổ "Thêm thư viện" đã mở, chọn JUnit, nhấn tiếp theo.
  7. Chọn phiên bản thư viện JUnit mà bạn cần và nhấn Hoàn tất.

Đó là tất cả. Cố gắng chạy thử nghiệm lại.


4

bạn nên biết điều đó :

@Before from junit4 đi với @Test: " import org.junit.Test "

@BeforeEach từ Junit5 đi với: " import org.junit.jupiter.api.Test "

vì vậy hãy đảm bảo rằng bạn đang sử dụng các bản nhập từ cùng một phiên bản Junit, nếu không, tôi đoán nó sẽ không hoạt động.


3

Sử dụng STS 3.9.1, tôi gặp vấn đề tương tự. Tuy nhiên, hiện tại tôi không yêu cầu bất kỳ tính năng JUnit5 mới nào, vì vậy tôi đã cố gắng buộc sử dụng phiên bản cũ hơn. Nếu sử dụng maven, bạn có thể thêm các phụ thuộc sau vào pom.xml của mình:

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>${junit.vintage.version}</version>
    <scope>test</scope>
</dependency>

Điều này đã thực hiện thủ thuật cho tôi (ít nhất là miễn là tôi không cần JUnit5 một cách rõ ràng).


Tại sao bạn lại thêm "org.junit.vi Movie" nếu bạn đang sử dụng JUnit5? Nó chỉ dành cho khả năng tương thích ngược (như sử dụng JUnit cũ) AFAIK.
Levent Divilioglu 18/09/18

Bởi vì với dự án đó và STS 3.9.1 tôi không thể / không sử dụng JUnit5 mà là JUnit4.
mahe 24/09/18

3

Tôi gặp vấn đề tương tự sau khi tạo TestCase mới: Eclipse -> New -> JUnit Test Case. Nó tạo ra một lớp mà không có công cụ sửa đổi mức truy cập. Tôi có thể giải quyết vấn đề bằng cách đặt public trước từ khóa class .


Cả lớp và phương thức đều yêu cầu từ khóa công khai. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi

3

Như mọi người đã thông báo đó là lỗi IDE, tôi đã thử EclipseSTS . Trong cả hai trường hợp, nó đều không thành công.

Để giải quyết vấn đề, tôi đã khắc phục bằng cách sửa đổi tệp pom.xml như bên dưới.

Tôi đã thêm hai phụ thuộc maven này junit-jupiter-enginejunit-platform-launcher.

pom.xml

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Ngoài ra, hãy đảm bảo thêm phiên bản của cả hai phần phụ thuộc maven vào thẻ thuộc tính.

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>

1
Việc thêm phụ thuộc vào junit-platform-launcher đã giải quyết được vấn đề cho tôi. Cảm ơn
Venkatesh Manohar

3

Tôi đang sử dụng nhật thực 2019-09.

Tôi đã phải cập nhật phiên bản junit-bom lên ít nhất là 5.4.0. Trước đây tôi đã có 5.3.1 và điều đó gây ra các triệu chứng tương tự của OP.

Cấu hình của tôi bây giờ là:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

một tùy chọn khác là thêm <junit-jupiter.version> 5.4.0 </junit-jupiter.version> vào thuộc tính pom
Uri Loya

2

Vì không thể đăng các khối mã vào bình luận, đây là mẫu POM tôi đang sử dụng trong các dự án yêu cầu JUnit 5. Điều này cho phép xây dựng và "Chạy như Thử nghiệm JUnit" trong Eclipse và xây dựng dự án bằng Maven đơn giản.

<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>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

Bạn có thể thấy rằng bây giờ bạn chỉ phải cập nhật phiên bản ở một nơi nếu bạn muốn cập nhật JUnit. Ngoài ra, số phiên bản nền tảng không cần xuất hiện (trong một phiên bản tương thích) ở bất kỳ đâu trong POM của bạn, nó được quản lý tự động thông qua junit-bomnhập.


2

Tôi đang sử dụng:

Phiên bản Spring Tool Suite 4: 4.4.2. RELEASE Id bản dựng: 201911201053 Phiên bản Java: 1.8.0_191

và thông báo hiển thị là Không tìm thấy thử nghiệm nào với người chạy thử nghiệm 'JUnit5'

những gì làm việc cho tôi là cấu hình bên dưới

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>

2

Bạn đang thiếu trình khởi chạy nền tảng JUnit 5 với nhóm: 'org.junit.platform', tên: 'junit-platform-launcher'

Chỉ cần thêm POM của bạn:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>

1

Lỗi tương tự mà tôi gặp phải trong phiên bản nhật thực Oxygen.3a Release (4.7.3a). Có vấn đề trong Maven Dependencies không khớp. Để giải quyết, tôi đã cập nhật Pom.xml của mình với các phụ thuộc sau.

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>



1

Bạn có thể chỉ sử dụng junit-jupiternhư một phụ thuộc kiểm tra thay vì junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>

1
Giải pháp này đã làm việc cho tôi với JUnit 5.6.2, Java 11 (và eclipse 2020-03 / 4.15.0)
coseos

1

Đối với tôi, tôi đã định cấu hình đường dẫn xây dựng để thêm Thư viện JUnit 5 và cũng bằng cách thêm phần phụ thuộc

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

riêng biệt.


1

Tôi cũng gặp phải vấn đề này với Eclipse (Phiên bản: 2019-12 (4.14.0)). Giải pháp dường như là sử dụng IntelliJ hoặc sử dụng thử nghiệm Maven để chạy các thử nghiệm như vậy trong Eclipse.


1

Tôi đã thực sự sử dụng spring-tool-suite-4-4.5.1 và tôi đã gặp lỗi này khi tôi muốn chạy một lớp thử nghiệm. và giải pháp là thêm vào 'java build path', 'junit5' trong Libraries java build path img


0

bạn nên thay đổi

@Test
public static void testmethod(){}

đến

@Test
public void testmethod(){}

@Test là phương thức tĩnh không hỗ trợ


0

Tôi đã gặp phải lỗi tương tự và trong trường hợp của tôi, đó là một vấn đề đơn giản là đi đến Project Properties > Maven > Update projectvà / hoặc dọn dẹp và xây dựng lại dự án.


0

Chỉ cần thêm Test.class của tôi thông qua menu eclipse và hoạt động. Nhấp chuột phải vào dự án -> Mới -> Khác -> JUnit -> JUnit Test Case


0

Nó có thể gây ra bởi phiên bản junit-platform-launcher / junit-platform-runner.

1.1.0 không hoạt động

1.4.1 hoạt động trong thiết lập của tôi.

Tôi nghĩ rằng đây là một lỗi trong nhật thực vì nó đang hoạt động với các thư viện phiên bản cao hơn của junit chứ không phải phiên bản khác.

Điều này đã giải quyết vấn đề của tôi. Giải pháp khác có vẻ ít khả thi hơn hoặc rủi ro hơn đối với tôi. Cảm ơn.


0

Khi tôi thay đổi phiên bản api jupiter của mình thành phiên bản mới nhất, nó đã được giải quyết. Trong khi đó, eclipse và các phần mở rộng của nhật thực khác (chẳng hạn như STS) đang gặp lỗi đường dẫn xây dựng. Đối với mỗi bản cập nhật maven, lý tưởng buộc tôi phải đặt Thư viện hệ thống JRE.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.