รันการทดสอบ JUnit เดียวใน Eclipse


85

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


11
คงจะดีไม่น้อยหากคุณเลือกคำตอบที่ดีที่สุดโดยทำเครื่องหมายสีเขียวข้างคำตอบ
guerda

คำตอบ:


96

ในโปรแกรมสำรวจแพ็กเกจจะเปิดชั้นเรียน ควรแสดงวิธีการทั้งหมด คลิกขวาที่วิธีการเดียวที่คุณต้องการเรียกใช้จากนั้นเลือก Run As -> JUnit จากเมนูบริบท (ทดสอบด้วย Eclipse 3.4.1) นอกจากนี้การเลือก "Run" ในรายการเดียวในมุมมอง JUnit-results เพื่อเรียกใช้การทดสอบซ้ำจะทำงานในลักษณะเดียวกัน


3
น่าเสียดายที่วิธีนี้ใช้ได้กับวิธีการทดสอบที่นำไปใช้โดยตรงในคลาสนั้นเท่านั้น ใช้ไม่ได้กับวิธีการทดสอบ @ ที่สืบทอดมา
Christopher Barber

1
สังเกตว่าคุณต้องคลิกที่ชื่อวิธีการ การคลิกภายในเมธอดจะเรียกใช้ทั้งคลาส (หรืออย่างน้อยก็เป็นพฤติกรรมของฉัน)
emragins

มันใช้งานได้เฉพาะกับ "package explorer" ตัวนี้เท่านั้นซึ่งไม่สะดวกในการหาวิธีทดสอบอย่างรวดเร็ว และยิ่งไปกว่านั้นการดีบักเกอร์จะเดินข้ามวิธีการอื่นซึ่งใช้เวลาเพิ่มขึ้น ต้องมีวิธีที่ดีกว่านี้ ...
Macilias

และมันก็เปราะบางเช่นกัน ... ตอนนี้คราสตัดสินใจที่จะไม่ข้ามการทดสอบอื่น ๆ เมื่อใช้วิธีนี้ :(
Macilias

27

วิธีที่เร็วที่สุดที่ฉันรู้:

  1. กดCtrl+ Shift+ (เลื่อนเคอร์เซอร์ไปที่การประกาศวิธีการปัจจุบัน)
  2. กดAlt+ Shift+ x(หรือdเพื่อแก้จุดบกพร่อง) จากนั้นกดt(ปุ่มลัดสำหรับ"Run JUnit Test" )
  3. ตรวจสอบผลการทดสอบ
  4. กดAlt+ เพื่อกลับไปที่บรรทัดรหัสที่คุณเคยมีมาก่อน

หากต้องการเรียกใช้การทดสอบทั้งหมดคุณสามารถข้ามขั้นตอนที่ 1 และ 4 ได้


13

ใน Eclipse 3.5 คุณสามารถแก้ไขสิ่งนี้ได้โดยการเปลี่ยนนักวิ่งทดสอบเป็น JUnit 3 ซึ่งจะใช้ได้กับการทดสอบ JUnit 3 เท่านั้นไม่ใช่การทดสอบ JUnit 4 คุณสามารถเปลี่ยนนักวิ่งทดสอบได้โดยทำดังต่อไปนี้:

  1. คลิกขวาที่วิธีทดสอบวิธีใดวิธีหนึ่งใน Outline explorer
  2. เลือก Run As -> Run Configurations
  3. บนแท็บ 'ทดสอบ' เลือก 'ทำการทดสอบครั้งเดียว'
  4. ในดรอปดาวน์ Test Runner เลือก 'JUnit 3'

อาจทำงานในเวอร์ชันอื่นได้เช่นกัน


โทรดี! การเปลี่ยน "Test Runner" เป็น "JUnit 3" ในกล่องโต้ตอบการกำหนดค่าการเรียกใช้งานสำหรับฉันใน Eclipse 3.6.0 (Helios) ตอนนี้ฉันสามารถรันวิธีเดียวในการทดสอบ JUnit FWIW ผมไม่เคยมีปัญหาการทำงานของแต่ละบุคคล JUnit 3 หรือ 4 ทดสอบการเรียน
Adam Monsen

สมบูรณ์แบบนี้ได้ผลสำหรับฉันเช่นกัน คำตอบข้างต้นนี้ไม่ได้แม้ว่าดูเหมือนว่าจะมีการโหวตเพิ่มขึ้น
dreza

12

สิ่งนี้เป็นไปได้ใน Eclipse Indigo ด้วย JUnit 4.8.2 คุณคลิกขวาที่วิธีการที่คุณต้องการที่จะทดสอบหน่วยที่ไม่ซ้ำกันในบานหน้าต่างและเลือกOutlineRun As -> JUnit Test

Run As -> Junit Testคุณสามารถคลิกขวาแม้กระทั่งการคัดเลือกชื่อวิธีการทดสอบในการแก้ไขที่มาและเลือก


1
ดูเหมือนว่าจะทดสอบกรณีทดสอบเฉพาะนั้น อย่างไรก็ตามหลังจากนั้นก็ยังคงดำเนินการกับกรณีทดสอบอื่น ๆ
lwpro2

@ lwpro2 คุณต้องใช้ JUnit 4 (คำอธิบายประกอบ) เพื่อทดสอบกรณีทดสอบเดียว JUnit 3 (ขยาย TestCase) จะยังคงเรียกใช้การทดสอบที่เกี่ยวข้องทั้งหมด
AnthonyW

1
wulfgar.pro ฉันให้ @ lwpro2 รู้ว่าหากคุณกำลังเรียกใช้การทดสอบ JUnit กับนักวิ่ง JUnit 4 (เพราะตัวอย่างเช่นคุณใช้ JUnit 4.8.2) แต่การทดสอบของคุณยังขยาย TestCase คุณจะไม่สามารถเรียกใช้งานเดี่ยวได้ ทดสอบด้วยตัวเอง คุณต้องใช้นักวิ่ง JUnit 3 หรือแปลงการทดสอบของคุณเป็นการใช้คำอธิบายประกอบ
AnthonyW

ขอบคุณสำหรับความคิดเห็น อย่างไรก็ตามฉันใช้ Junit4 กับ SpringJunit4ClassRunner ยังไงก็ไม่ใช่เรื่องใหญ่ การแสดงความคิดเห็นจากคำอธิบายประกอบทำได้อย่างรวดเร็ว
lwpro2

คำตอบนี้ง่ายที่สุด
Jackson Tale

9

อย่าใช้Strg+ F11แต่ฮอตAlt+ Shift+ ->X จากนั้น Eclipse จะเรียกใช้ไฟล์ที่เปิดอยู่ในปัจจุบันเป็นการทดสอบ JUnit ปุ่มเล่นสีเขียวจะเรียกใช้เฉพาะ Run Configuration ที่เลือกล่าสุดT

สำหรับผมมันทำงานได้ดีกับAlt+ Shift+ ->XT


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

@bibstha คุณสามารถใช้ Ctrl + 3 แล้วพิมพ์ "rerun" สิ่งนี้ช่วยให้คุณสามารถเรียกใช้กรณีทดสอบ JUnit ล่าสุดได้อีกครั้ง ภายใต้ Window-> Preferences-> General-> Keys คุณสามารถกำหนดทางลัดของตัวเองสำหรับการกระทำนี้ Ctrl + Shift + F11 จะเหมาะสมในความคิดของฉัน
guerda

9

ฉันจะเพิ่มให้คนอื่น ๆ โดยรวมแป้นพิมพ์ที่มีประสิทธิผลสูงวิธีเดียวที่ช่วยให้คุณแก้จุดบกพร่องการทดสอบหน่วยเดียว (วิธีการ)

เลื่อนเคอร์เซอร์ไปที่ชื่อวิธีการโดยใช้อย่างใดอย่างหนึ่ง

  • Ctrl+ Shift+ Upหรือ
  • Ctrl+ Shift+ Downหรือ
  • Ctrl+ oจากนั้นพิมพ์ชื่อของวิธีการ

เมื่อเคอร์เซอร์ของคุณอยู่บนชื่อวิธีการ (หรือก่อนหน้านั้น):

  • Alt+ Shift+ D-> T(แก้จุดบกพร่อง)
  • Alt+ Shift+ X-> T(เรียกใช้)

หลังจากเรียกใช้การทดสอบแล้วคุณสามารถย้อนกลับไปยังตำแหน่งที่เคอร์เซอร์อยู่ได้โดยทำ:

Alt+Back

คุณเกือบจะได้รับการตอบสนองเช่นพฤติกรรมโดย:

Ctrl+ Shift+ UpและAlt+ Shift+ X-> TและAlt+Back

คุณยังสามารถตั้งค่าเบรกพอยต์ได้อย่างรวดเร็ว:

Ctrl+ Shift+B



2

ฉันมีปัญหาเดียวกันกับที่คนอื่นเคยใช้ Eclipse 3.4.1 และนักวิ่งทดสอบ JUnit 4 - ไม่สามารถทำการทดสอบเดี่ยวได้ แต่ฉันพบข้อเสนอแนะจากที่อื่นที่ช่วยแก้ปัญหาได้ ชั้นเรียนทดสอบของฉันยังคงขยาย Junit.framework.TestCase เมื่อฉันหยุดขยาย TestCase ทุกอย่างทำงานได้ดีและฉันสามารถเรียกใช้การทดสอบ JUnit เดี่ยวกับนักวิ่งทดสอบ JUnit 4 ได้ แน่นอนฉันต้องการคำอธิบายประกอบ JUnit 4 ใช้การนำเข้าแบบคงที่สำหรับวิธีการยืนยัน แต่ฉันได้ทำไปแล้ว - ฉันไม่ได้ลบการสืบทอด TestCase


1

หากคุณมีการทดสอบจำนวนมากในไฟล์มากกว่าหนึ่งไฟล์และคุณต้องการเรียกใช้เฉพาะการทดสอบในไฟล์ใดไฟล์หนึ่งคุณสามารถคลิกขวาที่ไฟล์นั้นแล้วเลือก run as -> junit test ตอนนี้หากคุณต้องการเรียกใช้การทดสอบเพียงครั้งเดียวซึ่งมีอยู่ในไฟล์ที่มีการทดสอบจำนวนมากฉันเดาว่า (ฉันไม่ได้ติดตั้งคราสที่นี่) ซึ่งมุมมองเค้าร่างจะแสดงรายการวิธีการทดสอบทั้งหมดสำหรับไฟล์และคุณอาจจะทำได้ คลิกขวาที่วิธีการทดสอบเดียวและดำเนินการเป็นการทดสอบ JUNit

หวังว่าจะช่วยได้


1

เพื่อเรียกใช้วิธีทดสอบเพียงวิธีเดียว
ใน (package explorer หรือ project explorer) เปิดคลาส ควรแสดงวิธีการทั้งหมด คลิกขวาที่วิธีการเดียวที่คุณต้องการเรียกใช้จากนั้นเลือก Run As -> JUnit จากเมนูบริบท
ใส่คำอธิบายภาพที่นี่


0

สำหรับฉันมันใช้ไม่ได้ใน Eclipse 3.4.2 แม้ว่ามันจะใช้งานได้ในรีลีสก่อนหน้านี้ (ฉันได้ลองเรียกใช้วิธีเดียวจาก package explorer และการทดสอบ junit เดียวจากมุมมองของ junit)


การเรียกใช้วิธีการเดียว / การทดสอบจาก Package Explorer ใช้งานได้ดีสำหรับฉันใน Eclipse 3.4.2
Volker Stolz

0

ฉันเห็นด้วยกับประเด็นที่เกี่ยวกับ 3.4.2 ไม่ได้ผลเหมือนในเวอร์ชันก่อนหน้าอีกต่อไป ก่อนที่คุณจะสามารถคลิกขวาที่การทดสอบเดียวในกลุ่มการทดสอบจากมุมมอง JUnit และดำเนินการทดสอบนั้น ในเวอร์ชันล่าสุดจะยืนยันว่าจะใช้งานทั้งหมดเสมอ จริงอยู่ที่ข้อมูลพร็อพเพอร์ตี้เรียกใช้การทดสอบที่คุณคลิกก่อนและทิ้งส่วนที่เหลือในชุดรวมที่เรียกว่า "Unrooted Tests" หากใครคิดออกฉันก็อยากจะรู้วิธีหลีกเลี่ยง


0

เมื่ออ่านความคิดเห็นบางส่วนที่นี่ดูเหมือนว่าคุณอาจสนใจที่จะเรียกใช้การทดสอบสำหรับรหัสที่คุณเปลี่ยนแปลงเมื่อคุณเปลี่ยนแปลงโดยไม่สูญเสียความสนใจไปที่โค้ดที่คุณกำลังทำงานอยู่ มีปลั๊กอิน eclipse สำหรับทำสิ่งนั้น ดูinfinitest

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