คำถามติดแท็ก junit

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

6
วิธีตรวจสอบอินสแตนซ์ด้วย Scala (ทดสอบ)
ฉันกำลังพยายามรวม ScalaTest เข้ากับโปรเจ็กต์ Java ของฉัน แทนที่การทดสอบ JUnit ทั้งหมดด้วย ScalaTests มีอยู่ช่วงหนึ่งฉันต้องการตรวจสอบว่า Guice's Injector ฉีดถูกประเภทหรือไม่ ใน Java ฉันมีการทดสอบดังนี้: public class InjectorBehaviour { @Test public void shouldInjectCorrectTypes() { Injector injector = Guice.createInjector(new ModuleImpl()); House house = injector.getInstance(House.class); assertTrue(house.door() instanceof WoodenDoor); assertTrue(house.window() instanceof BambooWindow); assertTrue(house.roof() instanceof SlateRoof); } } แต่ฉันมีปัญหาในการทำเช่นเดียวกันกับ ScalaTest: class InjectorSpec extends …
101 java  scala  junit  scalatest 

5
ชุดทดสอบ JUnit 4
ฉันจะสร้างชุดทดสอบด้วย JUnit 4 ได้อย่างไร เอกสารทั้งหมดที่ฉันเห็นดูเหมือนจะไม่ได้ผลสำหรับฉัน และถ้าฉันใช้วิซาร์ด Eclipse จะไม่มีตัวเลือกให้ฉันเลือกคลาสทดสอบใด ๆ ที่ฉันสร้างขึ้น
100 java  junit  test-suite 

3
Java JUnit: วิธี X ไม่ชัดเจนสำหรับประเภท Y
ฉันมีการทดสอบบางอย่างที่ทำงานได้ดี จากนั้นฉันย้ายไปยังแพ็คเกจอื่นและตอนนี้ได้รับข้อผิดพลาด นี่คือรหัส: import static org.junit.Assert.*; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.jgrapht.Graphs; import org.jgrapht.WeightedGraph; import org.jgrapht.graph.DefaultWeightedEdge; import org.jgrapht.graph.SimpleWeightedGraph; import org.junit.*; @Test public void testEccentricity() { WeightedGraph<String, DefaultWeightedEdge> g = generateSimpleCaseGraph(); Map<String, Double> eccen = JGraphtUtilities.eccentricities(g); assertEquals(70, eccen.get("alpha")); assertEquals(80, eccen.get("l")); assertEquals(130, eccen.get("l-0")); assertEquals(100, eccen.get("l-1")); assertEquals(90, eccen.get("r")); assertEquals(120, eccen.get("r-0")); assertEquals(130, …

22
Eclipse - ดีบักเกอร์ไม่หยุดที่เบรกพอยต์
ฉันกำลังพยายามถ่ายภาพ JUnit ไม่สำเร็จ ในซอร์สโค้ดฉันได้กำหนดจุดพักไว้สองตำแหน่ง: 1) ในบรรทัดที่สมาชิกคงที่ถูกเริ่มต้น 2) บรรทัดแรกของกรณีทดสอบหนึ่ง ดีบักเกอร์หยุดในบรรทัดการเริ่มต้นฟิลด์แบบคงที่ แต่ไม่ได้หยุดในกรณีทดสอบ ไม่ว่าฉันจะตั้งค่าจุดพักไว้ที่ใดในกรณีทดสอบดีบักเกอร์ก็ไม่หยุดเพียงแค่นั้น ฉันทราบแน่นอนว่ามีการดำเนินการกรณีทดสอบเนื่องจากฉันเห็นข้อความบันทึกที่ฉันเพิ่มไว้ปรากฏในบันทึก ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. ฉันใช้ Eclipse Galileo และ JUnit4 launcher

3
เรียกใช้การทดสอบเดี่ยวจากคลาส JUnit โดยใช้บรรทัดคำสั่ง
ฉันพยายามหาแนวทางที่จะช่วยให้ฉันสามารถเรียกใช้การทดสอบเดียวจากคลาส JUnit โดยใช้บรรทัดคำสั่งและ java เท่านั้น ฉันสามารถเรียกใช้การทดสอบทั้งชุดจากชั้นเรียนโดยใช้สิ่งต่อไปนี้: java -cp .... org.junit.runner.JUnitCore org.package.classname สิ่งที่ฉันอยากทำจริงๆคืออะไรแบบนี้: java -cp .... org.junit.runner.JUnitCore org.package.classname.method หรือ: java -cp .... org.junit.runner.JUnitCore org.package.classname#method ฉันสังเกตเห็นว่าอาจมีวิธีดำเนินการนี้โดยใช้คำอธิบายประกอบ JUnit แต่ฉันไม่ต้องการแก้ไขซอร์สของคลาสทดสอบของฉันด้วยมือ (พยายามทำให้เป็นอัตโนมัติ) ฉันยังเห็นว่า Maven อาจมีวิธีทำเช่นนี้ แต่ถ้าเป็นไปได้ฉันอยากจะหลีกเลี่ยงโดยขึ้นอยู่กับ Maven ฉันจึงสงสัยว่ามีวิธีใดบ้างที่จะทำเช่นนี้? ประเด็นสำคัญที่ฉันกำลังมองหา: ความสามารถในการเรียกใช้การทดสอบเดียวจากคลาสทดสอบ JUnit Command Line (โดยใช้ JUnit) หลีกเลี่ยงการแก้ไขแหล่งทดสอบ หลีกเลี่ยงการใช้เครื่องมือเพิ่มเติม

7
การทดสอบ Android AsyncTask กับ Android Test Framework
ฉันมีตัวอย่างการใช้งาน AsyncTask ที่ง่ายมากและมีปัญหาในการทดสอบโดยใช้ Android JUnit framework ใช้งานได้ดีเมื่อฉันสร้างอินสแตนซ์และเรียกใช้งานในแอปพลิเคชันปกติ อย่างไรก็ตามเมื่อดำเนินการจากคลาสเฟรมเวิร์กการทดสอบ Android ใด ๆ (เช่นAndroidTestCase , ActivityUnitTestCase , ActivityInstrumentationTestCase2เป็นต้น) มันจะทำงานแปลก ๆ : ดำเนินdoInBackground()การตามวิธีการอย่างถูกต้อง แต่มันไม่ได้เรียกใช้วิธีการใดวิธีการแจ้งเตือน ( onPostExecute(), onProgressUpdate()ฯลฯ ) - เพียงแค่เงียบไม่สนใจพวกเขาโดยไม่ต้องแสดงข้อผิดพลาดใด ๆ นี่เป็นตัวอย่าง AsyncTask ที่ง่ายมาก: package kroz.andcookbook.threads.asynctask; import android.os.AsyncTask; import android.util.Log; import android.widget.ProgressBar; import android.widget.Toast; public class AsyncTaskDemo extends AsyncTask<Integer, Integer, String> { AsyncTaskDemoActivity …
97 android  junit 

6
วิธีทดสอบ Android Library Project
ฉันกำลังเขียนโครงการ Android Library โดยอาศัยคลาส Android Bitmap (เรียกว่า AndroindLib) ซึ่งมีเฉพาะคลาสยูทิลิตี้ (ไม่มีกิจกรรม) ฉันพยายามทดสอบโดยใช้ Android JUnit แต่ก็ยังบ่นว่าไม่พบ AnroidLib.apk วิธีใดเป็นวิธีที่ถูกต้องในการทดสอบ Unit test Android Library Project
97 android  junit  apk 

8
จะตั้งค่าพารามิเตอร์ JVM สำหรับ Junit Unit Tests ได้อย่างไร?
ฉันมีการทดสอบหน่วย Junit บางอย่างที่ต้องใช้พื้นที่ฮีปจำนวนมากในการรันนั่นคือ 1G (พวกเขาทดสอบฟังก์ชันการทำงานที่ต้องใช้หน่วยความจำมากสำหรับแอป webstart ซึ่งจะทำงานโดยมีพื้นที่ฮีปเพียงพอเท่านั้นและจะทำงานภายในบนเครื่อง Win 7 64 บิตดังนั้นการออกแบบการทดสอบใหม่จึงไม่ใช่คำแนะนำที่ใช้ได้จริง) ฉันกำลังพัฒนาใน Intellij IDEA ดังนั้นฉันจึงรู้ว่าฉันสามารถตั้งค่าพารามิเตอร์ JVM (เช่น -Xmx1024M) สำหรับคลาสทดสอบได้ อย่างไรก็ตามนี่เป็นเพียงการเรียกใช้คลาสทดสอบทั้งหมดเท่านั้น - หากฉันต้องการเรียกใช้การทดสอบแต่ละรายการฉันต้องสร้างคอนฟิกูเรชันการรันสำหรับวิธีทดสอบนั้นใหม่ นอกจากนี้สิ่งเหล่านี้ยังเป็น IDE และเฉพาะกล่องดังนั้นหากฉันเปลี่ยนกล่อง (ฉันพัฒนาในหลายเครื่อง) หรือเพื่อนร่วมงานคนใดคนหนึ่งพยายามเรียกใช้การทดสอบการตั้งค่าเหล่านั้นจะไม่ถูกถ่ายโอน (นอกจากนี้เพื่อนร่วมงานของฉันยังใช้ IDE อื่น ๆ เช่น Eclipse และ NetBeans) FWIW เราใช้ mercurial สำหรับการควบคุมซอร์สโค้ด สำหรับรอบการสร้างเราใช้ Maven ดังนั้นฉันจึงรู้วิธีระบุพารามิเตอร์ JVM สำหรับสิ่งนั้น ดังนั้น: - ฉันกำลังมองหาวิธีระบุพารามิเตอร์ JVM ที่จะใช้กับคลาสทดสอบทั้งหมดและวิธีการทดสอบแต่ละวิธี และ …

4
วิธีสร้าง unit test ง่ายๆใน eclipse [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันต้องการสร้างการทดสอบหน่วยอย่างง่ายดายเพียงแค่เลือกวิธีการ มีเครื่องมือในคราสที่ทำเช่นนั้นได้หรือไม่ ควรสนับสนุนเทมเพลต ฉันควรจะสร้างแบบทดสอบเชิงบวกและแบบทดสอบเชิงลบได้

7
การทดสอบ JUnit พร้อมจำนวนการทดสอบแบบไดนามิก
ในโครงการของเราฉันมีการทดสอบJUnitหลายครั้งเช่นนำทุกไฟล์จากไดเร็กทอรีและรันการทดสอบ หากฉันใช้testEveryFileInDirectoryวิธีการในTestCaseนี้จะแสดงเป็นเพียงการทดสอบเดียวที่อาจล้มเหลวหรือประสบความสำเร็จ แต่ฉันสนใจผลลัพธ์ในแต่ละไฟล์ ฉันจะเขียนTestCase/ TestSuiteเพื่อให้แต่ละไฟล์แสดงเป็นการทดสอบแยกกันเช่นใน TestRunner แบบกราฟิกของ Eclipse ได้อย่างไร (การเข้ารหัสวิธีการทดสอบที่ชัดเจนสำหรับแต่ละไฟล์ไม่ใช่ตัวเลือก) เปรียบเทียบยังคำถามParameterizedTest ที่มีชื่อใน Eclipse TestRunner

7
ฉันจะทำการทดสอบ JUnit รอได้อย่างไร
ฉันมีการทดสอบ JUnit ที่ฉันต้องการรอเป็นระยะเวลาหนึ่งพร้อมกัน การทดสอบ JUnit ของฉันมีลักษณะดังนี้: @Test public void testExipres(){ SomeCacheObject sco = new SomeCacheObject(); sco.putWithExipration("foo", 1000); // WAIT FOR 2 SECONDS assertNull(sco.getIfNotExipred("foo")); } ฉันพยายามThread.currentThread().wait()แล้ว แต่มันพ่นIllegalMonitorStateException (ตามที่คาดไว้) มีเคล็ดลับบางอย่างหรือฉันต้องการจอภาพอื่น?

30
Eclipse ไม่พบการทดสอบโดยใช้ JUnit 5 ที่เกิดจาก NoClassDefFoundError สำหรับ LauncherFactory
ปัญหา เมื่อใดก็ตามที่ฉันรันการทดสอบ JUnit โปรเจ็กต์ของฉัน (โดยใช้ JUnit 5 กับ Java 9 และ Eclipse Oxygen 1.a) ฉันพบปัญหาว่าคราสไม่พบการทดสอบใด ๆ คำอธิบาย ภายใต้คอนฟิกูเรชันการรัน eclipse ไม่พบเมธอดที่ใส่คำอธิบายประกอบด้วย @Test แต่จะแสดงให้ฉันเห็น " (ทุกวิธี) " แทน ภาพต่อไปนี้หวังว่าจะช่วยให้การตั้งค่าของฉันดีขึ้น: เอาต์พุตคอนโซล: 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 …
95 java  eclipse  junit  java-9  junit5 

2
ฉันจะจัดการทรัพยากรการทดสอบหน่วยใน Kotlin ได้อย่างไรเช่นเริ่ม / หยุดการเชื่อมต่อฐานข้อมูลหรือเซิร์ฟเวอร์ elasticsearch ในตัว
ในการทดสอบ Kotlin JUnit ของฉันฉันต้องการเริ่ม / หยุดเซิร์ฟเวอร์แบบฝังและใช้ในการทดสอบของฉัน ฉันลองใช้@BeforeคำอธิบายประกอบJUnit กับเมธอดในคลาสทดสอบของฉันและมันก็ใช้ได้ดี แต่มันไม่ใช่พฤติกรรมที่ถูกต้องเนื่องจากมันรันทุกกรณีทดสอบแทนที่จะใช้เพียงครั้งเดียว ดังนั้นฉันจึงต้องการใช้@BeforeClassคำอธิบายประกอบในวิธีการ แต่การเพิ่มลงในวิธีการทำให้เกิดข้อผิดพลาดว่าต้องเป็นวิธีการคงที่ Kotlin ดูเหมือนจะไม่มีวิธีการคงที่ จากนั้นก็ใช้กับตัวแปรคงที่เช่นเดียวกันเพราะฉันต้องเก็บข้อมูลอ้างอิงไปยังเซิร์ฟเวอร์ฝังตัวเพื่อใช้ในกรณีทดสอบ ดังนั้นฉันจะสร้างฐานข้อมูลแบบฝังนี้เพียงครั้งเดียวสำหรับกรณีทดสอบทั้งหมดของฉันได้อย่างไร class MyTest { @Before fun setup() { // works in that it opens the database connection, but is wrong // since this is per test case instead of being shared for all } @BeforeClass fun …

8
อะไรคือความแตกต่างระหว่างความล้มเหลวและข้อผิดพลาดใน JUnit?
ฉันกำลังทำการทดสอบ JUnit บนฐานรหัสขนาดใหญ่และฉันตระหนักว่าบางครั้งฉันได้รับ "ข้อผิดพลาด" ในขณะที่บางครั้งฉันได้รับ "ความล้มเหลว" อะไรคือความแตกต่าง?
93 java  testing  junit 

4
คุณสามารถเพิ่มข้อความที่กำหนดเองใน AssertJ assertThat ได้หรือไม่
เรามีชุดทดสอบที่ใช้การยืนยัน JUnit กับ Hamcrest matchers เป็นหลัก หนึ่งในทีมของเราเริ่มทดลองใช้AssertJและสร้างความประทับใจให้กับผู้คนด้วยไวยากรณ์ความยืดหยุ่นและความเปิดเผย มีคุณลักษณะหนึ่งที่ JUnit ให้ซึ่งฉันไม่พบสิ่งที่เทียบเท่าใน AssertJ นั่นคือการเพิ่มข้อความยืนยันความล้มเหลวแบบกำหนดเอง เรามักจะเปรียบเทียบวัตถุที่ไม่ได้สร้างขึ้นเพื่อให้มนุษย์สามารถอ่านได้และจะมีรหัสหรือ UUID ที่ดูเหมือนสุ่มและเป็นไปไม่ได้ที่จะบอกว่าข้อมูลเหล่านั้นควรจะเป็นอย่างไร นี่เป็นสถานการณ์ที่หลีกเลี่ยงไม่ได้สำหรับ codebase ของเราน่าเศร้าที่ส่วนหนึ่งของวัตถุประสงค์ที่บรรลุคือการทำแผนที่ข้อมูลระหว่างบริการอื่น ๆ โดยไม่จำเป็นต้องเข้าใจว่ามันคืออะไร ใน JUnit assertThatวิธีการจัดเตรียมเวอร์ชันที่มีString reasonพารามิเตอร์ก่อนMatcher<T>พารามิเตอร์ สิ่งนี้ทำให้การเพิ่มสตริงดีบักสั้น ๆ เป็นเรื่องเล็กน้อยซึ่งจะช่วยให้เกิดความกระจ่างเกี่ยวกับปัญหาเช่นการเปรียบเทียบควรมีความหมายกับมนุษย์อย่างไร ในทางกลับกันAssertJ มีstatic assertThatวิธีการทั่วไปที่แตกต่างกันกว่าล้านล้านวิธีซึ่งส่งคืนรูปแบบของอินเทอร์เฟซ Assertหรือหนึ่งในคลาสที่นำไปใช้งานจำนวนมาก อินเทอร์เฟซนี้ไม่ได้จัดเตรียมวิธีมาตรฐานในการตั้งค่าข้อความที่กำหนดเองที่จะรวมกับความล้มเหลว มีวิธีใดบ้างในการรับฟังก์ชันนี้จาก AssertJ API หรือหนึ่งในส่วนขยายโดยไม่ต้องสร้างคลาสการยืนยันที่กำหนดเองสำหรับทุกประเภทการยืนยันที่เราต้องการเพิ่มข้อความ

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