ไม่สามารถแก้ไขการนำเข้า org.junit


114

ฉันต้องการแก้ปัญหา java สำหรับการสัมภาษณ์และพวกเขาได้ส่งคลาสทดสอบมาให้ฉัน เริ่มต้นด้วย

import org.junit.Before;

และยังมีไวยากรณ์ต่อไปนี้ใน places:

@RunWith(JUnit4.class)
...
@Before
...
@Test

ฉันไม่ได้ใช้ Java มาสักพักแล้วสิ่งนี้ทำให้ฉันสับสนเล็กน้อย ฉันดาวน์โหลด eclipse และเมื่อฉันพยายามรวบรวมไฟล์ทดสอบนี้มีข้อผิดพลาดในการนำเข้าและที่เครื่องหมาย @ ข้อผิดพลาดในการนำเข้าทำให้เกิด:

The import org.junit cannot be resolved.

และไม่รู้จัก @RunWith ด้วยซ้ำเพราะพยายามแก้ไขเป็นประเภท


1
คุณค้นหาอะไรในเน็ต คุณต้องการให้เราอธิบายโดยละเอียดว่าคุณจะเรียกใช้กรณีทดสอบ JUnit 4 ได้อย่างไร? (คำแนะนำ: มีสิ่งนี้JUnit4.classในรหัสของคุณ)
Luiggi Mendoza


1
คุณต้องเพิ่มไฟล์ jar junit ในโปรเจ็กต์ คุณสามารถใช้ junit-dep-4.8.2.jar จากนั้นคุณสามารถคลิกขวาและเลือก run as junit test case
Krushna

2
คุณได้เพิ่มไฟล์ jar ของ jUnit ลงใน build path ใน eclipse แล้วหรือยัง?
Pradeep Simha

เพิ่งทำฉันควรจะตอบคำถามนี้ ขอบคุณสำหรับความช่วยเหลือ
SKLAK

คำตอบ:


192

คุณต้องเพิ่มjunitไลบรารีในคลาสพา ธ ของโครงการของคุณ มีหลายทางเลือกให้บรรลุขึ้นอยู่กับการตั้งค่าการพัฒนาของคุณ

  1. บรรทัดคำสั่ง : ในกรณีของการเรียกใช้บรรทัดคำสั่งคุณจะต้องเพิ่มjunit.jarclasspath ของแอปพลิเคชันของคุณด้วยjava -cp /path/to/junit.jar. ลองดูที่คำตอบที่นี่

  2. การใช้ eclipse : การแจกแจง Eclipse ถูกรวมเข้ากับไลบรารีนี้และนี่คือวิธีที่คุณสามารถใช้สำหรับโปรเจ็กต์ของคุณ คลิกขวาที่โครงการ eclipse และไปที่:

คุณสมบัติ -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

ในสถานการณ์ที่คุณต้องการใช้ jar เวอร์ชันอื่นแทนที่จะคลิกที่Add Libraryด้านบนคุณควรคลิกAdd External Jarและค้นหาไลบรารีบนระบบไฟล์


1
@NishantShreshth จะเพิ่มสิ่งนี้ในmavenโครงการได้อย่างไร?
ษ ณ สียัมบาลาปิติ

ฉันเพิ่ม JUnit 4 ผ่าน Properties -> Java Build Path แต่ทุก ๆ ครั้ง Eclipse ยังคงแสดงข้อผิดพลาดนี้ให้ฉันแม้ว่าการรันการทดสอบจะทำได้โดยไม่มีปัญหา การรีสตาร์ท Eclipse จะช่วยแก้ปัญหาได้ - ชั่วขณะ คำอธิบายใด ๆ สำหรับเรื่องนี้?
Thomas W

ไม่ได้ผลสำหรับฉัน ทันทีที่โปรเจ็กต์เป็นแบบแยกส่วนปุ่มทั้งหมดในแท็บไลบรารีจะเป็นสีเทา (ด้วย eclipse 2019-09 และ java 11.0.4)
Gyro Gearloose

14

คลิกขวาที่โครงการ eclipse และนำทาง:

คุณสมบัติ -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

มันใช้ได้กับฉัน


6

คุณสามารถค้นหาบรรทัดเช่น "@Test" จากนั้นใช้ Quickfix "add junit 4 library to the build path" ที่บรรทัดนี้ ฉันคิดว่านี่เร็วกว่าการเพิ่มจูนิทลงในโครงการด้วยตนเอง


สิ่งนี้ไม่สามารถแก้ไขได้ในสถานการณ์ของฉัน JUnit อยู่ในเส้นทางอย่างสมบูรณ์แบบ แต่ยังคงแสดงข้อผิดพลาด
猫 IT

1
ใช้ได้ผลสำหรับฉัน ^^
Jumping_monkey

6

หากคุณใช้ maven และโค้ดชิ้นนี้อยู่ในmainโฟลเดอร์ให้ลองย้ายตำแหน่งไปยังtestโฟลเดอร์


3
@VigneshrajSekarbabu เนื่องจากผู้คนมักตั้งค่าjunitขอบเขตเป็นtestซึ่งหมายความว่าพวกเขาจะทำงานในโฟลเดอร์ทดสอบเท่านั้น
Searene

ขอบคุณ @searene .. ฉันพยายามให้ TestBase ของฉันอยู่ใน src / main / java แต่ไม่สามารถรับคำอธิบายประกอบ testNG ได้ ดังนั้นจึงย้ายไปที่ src / test / java แต่ตอนนี้ฉันพยายามสร้าง RetryAnalyzer ใน src / main / java และ IRetrAnalyzer อยู่ใน org.testng ซึ่งฉันไม่สามารถรับในคลาส src / main / java ได้ ความคิดใดที่สามารถแก้ปัญหานี้ได้
Vigneshraj Sekarbabu

@VigneshrajSekarbabu วิธีหนึ่งคือตรวจสอบขอบเขตการอ้างอิงที่เกี่ยวข้องกับการทดสอบตรวจสอบให้แน่ใจว่าไม่ใช่testเพื่อให้คุณสามารถใช้ทุกอย่างภายใน/src/main/javaได้
Searene

5

หากคุณใช้ eclipse และทำงานกับโปรเจ็กต์ maven ขั้นตอนข้างต้นก็ใช้ได้เช่นกัน

คลิกขวาที่โฟลเดอร์รูทของคุณ

Properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

คำแนะนำทีละขั้นตอนที่นี่


สำหรับฉันสิ่งนี้ใช้ได้ผลเท่านั้น ฉันกำลังทำการดีบักแบบรีโมตของเว็บแอปพลิเคชันดังนั้น eclipse จึงมีปัญหาบางอย่างกับการรวมจูนิท เกี่ยวกับ maven ใช่ maven นำเข้า junit และจะเรียกใช้การทดสอบเมื่อเราเรียกใช้ mvn clean install ไม่ใช่ผู้เชี่ยวชาญ แต่นี่คือสิ่งที่ฉันคิดว่าเกิดขึ้นหรืออย่างน้อยที่สุดก็เกิดขึ้นกับฉัน
sarthakgupta072

2

ดูเหมือนว่าไฟล์ jar ของ Junit ไม่อยู่ในพา ธ ตรวจสอบให้แน่ใจว่าคุณใช้ jdk1.5 ขึ้นไป


ไม่ใช่แค่ jar เท่านั้น OP ควรรันเป็นการทดสอบ JUnit (บางที OP จะถามว่าจะเรียกใช้คลาส Java ได้อย่างไรหากไม่มีpublic static void main(String[] args)
Luiggi Mendoza

ไม่ทราบวิธีเชื่อมโยง JUnit ฉันคิดออกแล้ว คลิกขวาที่ชื่อโปรเจ็กต์และเชื่อมโยง JUnit ขอบคุณ
SKLAK

2

หากคุณใช้ Java 9 ขึ้นไปคุณอาจจำเป็นต้องมีการพึ่งพา junit ใน module-info.java ของคุณ

module myModule {
    requires junit;
}

ฉันค่อนข้างแน่ใจว่าปัญหาที่ฉันเผชิญซึ่งเหมือนกับคำถามเดิมนั้นเชื่อมโยงกับกลไกโมดูลใหม่นี้ ตอนนี้ฉันได้เพิ่มบรรทัดนี้ใน module-info.java ที่มีอยู่แล้วและไม่มีเครื่องหมายกากบาทสีแดงในตัวสำรวจแพ็คเกจอีกต่อไป แต่ทุกอย่างยังคงเหมือนเดิมในแหล่งที่มา
猫มัน

2

หากใช้ Maven คุณสามารถคลิกบริบทและเรียกใช้ 'Maven / Update Project ... '

ใส่คำอธิบายภาพที่นี่


เมื่อฉันทำเช่นนี้ module-info.java เต็มไปด้วยข้อผิดพลาดและแลมบ์ดาไม่รู้จัก Eclipse / maven ได้เปลี่ยนไลบรารีและเวอร์ชัน java กลับเป็น 1.5 และฉันมี <plugin> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-compiler-plugin </artifactId> <version> 3.8 .0 </version> <configuration> <release> 11 </release> </configuration> </plugin> in my pom
Gyro Gearloose

1

ในการเริ่มต้นรหัสบรรทัดคัดลอกองค์ประกอบ 'Junit' หรือ 'TestNG' ที่ผ่านมาจะแสดงพร้อมข้อผิดพลาดจนกว่าคุณจะนำเข้าไลบรารีด้วยไฟล์โครงการ

ในการนำเข้าไลบรารีไปยังโปรเจ็กต์:

Right Click on the Project --> Properties --> Java Build Path --> Libraries -> Add Library -> 'Junit' or 'TestNG'

เพิ่ม Junit Libraries


1

เมื่อคุณเพิ่ม TestNG ในการอ้างอิง Maven ของคุณให้เปลี่ยนขอบเขตจากการทดสอบเป็นคอมไพล์หวังว่านี่จะช่วยแก้ปัญหาของคุณได้ ..


โปรดพิจารณาใส่คำแนะนำดังกล่าวเป็นความคิดเห็น
ฮาเดส

1

คุณต้องเพิ่มการพึ่งพา Junit ในไฟล์ pom.xml นั่นหมายความว่าคุณต้องอัปเดตด้วยเวอร์ชันล่าสุด

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency> 

0

ในกรณีที่คุณต้องการสร้างคลาสทดสอบของคุณเอง ใน Eclipse ไปที่ไฟล์ -> New -> J หน่วยกรณีทดสอบ จากนั้นคุณสามารถเลือกเส้นทางทั้งหมดของคุณและการตั้งค่าคลาสทดสอบภายในป๊อปอัปตัวช่วยสร้าง


-1

อัปเดตเป็น JUnit เวอร์ชันล่าสุดใน pom.xml มันใช้ได้กับฉัน


คำตอบนี้จะดีกว่าหากมีรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำเช่นโค้ดที่จะวางวิธีหาเวอร์ชันล่าสุดวิธีค้นหาโค้ดออนไลน์เพื่อให้ได้ข้อความที่ถูกต้อง ฯลฯ
LightCC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.