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

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

7
java.lang.NoClassDefFoundError: com / sun / mail / util / MailLogger สำหรับกรณีทดสอบ JUnit สำหรับ Java mail
ฉันใช้ Java Mail API เพื่ออ่านและแยกวิเคราะห์อีเมล มันทำงานได้ดีกับรหัส Servlet ตอนนี้ฉันกำลังพยายามเขียนกรณีทดสอบ JUnit เพื่อจุดประสงค์เดียวกัน แต่ทางไลน์ Session session = Session.getDefaultInstance(properties);ฉันได้รับข้อยกเว้นดังต่อไปนี้: java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger at javax.mail.Session.initLogger(Session.java:227) at javax.mail.Session.<init>(Session.java:212) at javax.mail.Session.getDefaultInstance(Session.java:315) at javax.mail.Session.getDefaultInstance(Session.java:355) at com.vxl.appanalytix.dataload.fromEmail.EmailParser.parseEmailSubject(EmailParser.java:44) at com.vxl.appanalytix.controllers.controllerClasses.GenericEmailServiceClass.readEmailAttachments(GenericEmailServiceClass.java:33) at com.vxl.appanalytix.dataload.GenericEmailTestCase.test(GenericEmailTestCase.java:42) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) …
127 junit  javamail 

6
Junit: แยกการทดสอบการรวมและการทดสอบหน่วย
ฉันได้รับการทดสอบ Junit มาเป็นจำนวนมาก แต่การทดสอบเหล่านี้ (นอกเหนือจากการทดสอบส่วนใหญ่ไม่ได้ผล) เป็นส่วนผสมของการทดสอบหน่วยจริงและการทดสอบการรวม (ต้องใช้ระบบภายนอกฐานข้อมูล ฯลฯ ) ดังนั้นฉันจึงพยายามคิดหาวิธีแยกพวกมันออกจากกันเพื่อที่ฉันจะได้รันการทดสอบหน่วยได้อย่างรวดเร็วและการทดสอบการรวมหลังจากนั้น ตัวเลือกคือ .. แยกเป็นไดเรกทอรีแยกต่างหาก ย้ายไปที่ Junit4 (จาก v3) และใส่คำอธิบายประกอบคลาสเพื่อแยกคลาส ใช้หลักการตั้งชื่อไฟล์เพื่อบอกว่าคลาสคืออะไรเช่น AdapterATest และ AdapterAIntergrationTest 3 มีปัญหาว่า Eclipse มีตัวเลือก "เรียกใช้การทดสอบทั้งหมดในโครงการ / แพ็คเกจหรือโฟลเดอร์ที่เลือก" ดังนั้นจึงยากมากที่จะเรียกใช้การทดสอบการรวมระบบ 2: เสี่ยงที่นักพัฒนาอาจเริ่มเขียนการทดสอบการรวมในชั้นเรียนทดสอบหน่วยและมันก็ยุ่งเหยิง 1: ดูเหมือนจะเป็นทางออกที่ดีที่สุด แต่ลำไส้ของฉันบอกว่าต้องมีทางออกที่ดีกว่านี้ นั่นคือคำถามของฉันคุณจะแยกการทดสอบการรวมและการทดสอบหน่วยที่เหมาะสมได้อย่างไร

12
JUnit vs TestNG [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน10 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ในที่ทำงานเรายังคงใช้ JUnit 3 เพื่อทำการทดสอบของเรา เรากำลังพิจารณาที่จะเปลี่ยนไปใช้ JUnit 4 สำหรับการทดสอบใหม่ที่กำลังเขียนขึ้น แต่ตอนนี้ฉันจับตาดู TestNG มาระยะหนึ่งแล้ว คุณมีประสบการณ์อะไรบ้างกับ JUnit 4 หรือ TestNG และดูเหมือนว่าจะทำงานได้ดีกว่าสำหรับการทดสอบจำนวนมาก การมีความยืดหยุ่นในการทดสอบการเขียนเป็นสิ่งสำคัญสำหรับเราเช่นกันเนื่องจากการทดสอบการใช้งานของเราครอบคลุมในแง่มุมกว้างและจำเป็นต้องเขียนด้วยวิธีต่างๆเพื่อให้ได้ผลลัพธ์ ข้อสอบเก่าจะไม่ถูกเขียนซ้ำเนื่องจากพวกเขาทำงานได้ดี สิ่งที่ฉันอยากเห็นในการทดสอบใหม่คือความยืดหยุ่นในวิธีการเขียนการทดสอบการยืนยันอย่างเป็นธรรมชาติการจัดกลุ่มและการดำเนินการทดสอบที่กระจายได้ง่าย
125 java  testing  junit  testng 

7
การทดสอบและความปลอดภัยในฤดูใบไม้ผลิ: วิธีจำลองการตรวจสอบสิทธิ์
ฉันพยายามหาวิธีทดสอบหน่วยว่า URL ของคอนโทรลเลอร์ของฉันมีการรักษาความปลอดภัยอย่างเหมาะสมหรือไม่ ในกรณีที่มีคนเปลี่ยนแปลงสิ่งต่างๆรอบตัวและลบการตั้งค่าความปลอดภัยโดยไม่ได้ตั้งใจ วิธีการควบคุมของฉันมีลักษณะดังนี้: @RequestMapping("/api/v1/resource/test") @Secured("ROLE_USER") public @ResonseBody String test() { return "test"; } ฉันตั้งค่า WebTestEnvironment ดังนี้: import javax.annotation.Resource; import javax.naming.NamingException; import javax.sql.DataSource; import org.junit.Before; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.FilterChainProxy; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; …


15
การรับ“ การข้ามการดำเนินการ JaCoCo เนื่องจากไฟล์ข้อมูลการดำเนินการหายไป” เมื่อดำเนินการ JaCoCo
ฉันใช้ Maven 3.0.3, JUnit 4.8.1 และ Jacoco 0.6.3.201306030806 และฉันกำลังพยายามสร้างรายงานความครอบคลุมการทดสอบ ฉันมีโปรเจ็กต์ที่มีการทดสอบหน่วยเท่านั้น แต่ฉันไม่สามารถเรียกใช้รายงานได้ฉันได้รับข้อผิดพลาดซ้ำ ๆ : Skipping JaCoCo execution due to missing execution data fileเมื่อฉันเรียกใช้: mvn clean install -P test-coverage นี่คือวิธีกำหนดค่า pom ของฉัน: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.14.1</version> <configuration> <reuseForks>true</reuseForks> <argLine>-Xmx2048m</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.14.1</version> <configuration> <reuseForks>true</reuseForks> <argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine> </configuration> <executions> …
123 maven  junit  jacoco 

11
วิธีง่ายๆในการทดสอบ Junit เดียวกันซ้ำแล้วซ้ำเล่า?
เหมือนชื่อเรื่องฉันกำลังมองหาวิธีง่ายๆในการเรียกใช้การทดสอบ JUnit 4.x หลาย ๆ ครั้งติดต่อกันโดยอัตโนมัติโดยใช้ Eclipse ตัวอย่างจะเรียกใช้การทดสอบเดียวกัน 10 ครั้งติดต่อกันและรายงานผลกลับมา เรามีวิธีที่ซับซ้อนในการทำสิ่งนี้อยู่แล้ว แต่ฉันกำลังมองหาวิธีง่ายๆในการทำเพื่อที่ฉันจะมั่นใจได้ว่าการทดสอบที่ไม่สม่ำเสมอที่ฉันพยายามแก้ไขจะยังคงได้รับการแก้ไข ทางออกที่ดีคือปลั๊กอิน / การตั้งค่า / คุณลักษณะของ Eclipse ที่ฉันไม่รู้จัก
122 java  eclipse  junit 

6
การเริ่มต้นวัตถุจำลอง - MockIto
มีหลายวิธีในการเริ่มต้นวัตถุจำลองโดยใช้ MockIto วิธีใดดีที่สุดในบรรดาสิ่งเหล่านี้ 1 public class SampleBaseTestCase { @Before public void initMocks() { MockitoAnnotations.initMocks(this); } 2 @RunWith(MockitoJUnitRunner.class) [แก้ไข] 3. mock(XXX.class); แนะนำหน่อยว่ามีวิธีอื่นที่ดีกว่านี้ไหม ...
122 java  junit  mockito 

10
Junit - เรียกใช้วิธีการตั้งค่าหนึ่งครั้ง
ฉันตั้งค่าชั้นเรียนด้วยการทดสอบสองสามครั้งและแทนที่จะใช้@Beforeฉันอยากจะมีวิธีการตั้งค่าที่ดำเนินการเพียงครั้งเดียวก่อนการทดสอบทั้งหมด เป็นไปได้กับ Junit 4.8 หรือไม่?
120 java  junit 

9
แนวทางปฏิบัติที่ดีที่สุด: เริ่มต้นฟิลด์คลาส JUnit ใน setUp () หรือเมื่อประกาศ?
ฉันควรเริ่มต้นฟิลด์คลาสเมื่อประกาศเช่นนี้หรือไม่? public class SomeTest extends TestCase { private final List list = new ArrayList(); public void testPopulateList() { // Add stuff to the list // Assert the list contains what I expect } } หรือใน setUp () แบบนี้? public class SomeTest extends TestCase { private List list; @Override protected void …
120 java  junit 

2
โฟลเดอร์ src / androidtest และ src / test ต่างกันอย่างไร
ในโปรเจ็กต์ใน Android Studio โดยค่าเริ่มต้นจะมีโฟลเดอร์ทดสอบสองโฟลเดอร์ ประการแรกคือsrc/androidTest. โฟลเดอร์นี้มีอยู่แล้วใน Android Studio เวอร์ชันก่อนหน้า อย่างไรก็ตามตอนนี้มีโฟลเดอร์ทดสอบใหม่ตามค่าเริ่มต้นsrc/testและการพึ่งพาใหม่testCompile 'junit: junit: 4.12'ในbuild.gradle. ฉันใช้โฟลเดอร์ใดในการทดสอบ อะไรคือความแตกต่างระหว่างทั้งสอง?

10
JUnit: วิธีหลีกเลี่ยง "ไม่มีวิธีที่รันได้" ในคลาสเครื่องมือทดสอบ
ฉันเปลี่ยนมาใช้ JUnit4.4 จาก JUnit3.8 ฉันเรียกใช้การทดสอบโดยใช้มดการทดสอบทั้งหมดของฉันทำงานได้สำเร็จ แต่คลาสยูทิลิตี้การทดสอบล้มเหลวโดยมีข้อผิดพลาด "ไม่มีวิธีที่รันได้" รูปแบบที่ฉันใช้คือการรวมคลาสทั้งหมดที่มีชื่อ * ทดสอบ * ไว้ในโฟลเดอร์ทดสอบ ฉันเข้าใจว่านักวิ่งไม่พบวิธีการใด ๆ ที่มีคำอธิบายประกอบด้วยแอตทริบิวต์ @Test แต่ไม่มีคำอธิบายประกอบดังกล่าวเนื่องจากชั้นเรียนเหล่านี้ไม่ใช่การทดสอบ น่าแปลกที่เมื่อเรียกใช้การทดสอบเหล่านี้ใน eclipse ก็ไม่ได้บ่นเกี่ยวกับคลาสเหล่านี้ ใน JUnit3.8 ไม่ใช่ปัญหาเลยเนื่องจากคลาสยูทิลิตี้เหล่านี้ไม่ได้ขยาย TestCase ดังนั้นนักวิ่งจึงไม่พยายามเรียกใช้งาน ฉันรู้ว่าฉันสามารถยกเว้นคลาสเฉพาะเหล่านี้ในเป้าหมาย junit ใน ant script ได้ แต่ฉันไม่ต้องการเปลี่ยนไฟล์บิวด์ในทุกคลาสยูทิลิตี้ใหม่ที่ฉันเพิ่ม ฉันยังสามารถเปลี่ยนชื่อชั้นเรียนได้ (แต่การตั้งชื่อชั้นเรียนให้ดีเป็นความสามารถที่อ่อนแอที่สุดของฉันเสมอ :-)) มีวิธีแก้ปัญหาที่สวยงามสำหรับปัญหานี้หรือไม่?
118 java  ant  junit  testing 

3
การแยกคลาส JUnit ออกเป็นชุดทดสอบพิเศษ?
ฉันเรียนรู้แนวคิดการพัฒนาทดสอบขับเคลื่อนผ่านการอ่านบทความช่าง (คลิกช่างภายใต้ตามกระทู้ ) แนะนำไว้ในคำตอบสำหรับคำถามของฉันก่อนหน้า"โครงการตัวอย่างสำหรับการเรียนรู้ JUnit และวิศวกรรมซอฟต์แวร์ที่เหมาะสม" โดนใจสุด ๆ ! แต่ตอนนี้ฉันอยากจะนั่งลงและลองด้วยตัวเอง ฉันมีคำถามที่หวังว่าจะต้องการเพียงคำตอบง่ายๆ คุณจัดชั้นเรียนทดสอบ JUnit และรหัสจริงของคุณอย่างไร? ฉันกำลังพูดถึงโครงสร้างแพ็คเกจเป็นหลัก แต่แนวคิดอื่น ๆ ของโน้ตก็จะเป็นประโยชน์เช่นกัน คุณใส่คลาสทดสอบใน org.myname.project.test. * และโค้ดปกติใน org.myname.project. * หรือไม่ คุณจัดชั้นเรียนทดสอบควบคู่ไปกับชั้นเรียนปกติหรือไม่? คุณชอบที่จะนำหน้าชื่อชั้นเรียนด้วย Test มากกว่าคำต่อท้ายหรือไม่? ฉันรู้ว่าสิ่งนี้ดูเหมือนจะเป็นเรื่องที่ฉันไม่ควรกังวลในเร็ว ๆ นี้ แต่ฉันเป็นคนที่มีองค์กรเป็นศูนย์กลาง ฉันเกือบจะเป็นคนที่ใช้เวลามากขึ้นในการหาวิธีการเพื่อติดตามสิ่งที่ต้องทำแทนที่จะทำสิ่งต่างๆให้สำเร็จ และฉันมีโปรเจ็กต์ที่แบ่งเป็นแพ็คเกจอย่างเรียบร้อย แต่โปรเจ็กต์กลายเป็นเรื่องยุ่งเหยิง แทนที่จะพยายาม refactor ทุกอย่างและเขียนการทดสอบฉันต้องการเริ่มต้นใหม่ทดสอบก่อนและทั้งหมด แต่ก่อนอื่นฉันต้องรู้ว่าการทดสอบของฉันไปถึงไหน แก้ไข:ฉันลืม Maven ไปเลย แต่ดูเหมือนว่าพวกคุณส่วนใหญ่จะใช้มัน! ในอดีตฉันมีกรณีการใช้งานเฉพาะที่ Maven ทำลายฉันอย่างสมบูรณ์ แต่ Ant ให้ความยืดหยุ่นที่ฉันต้องการดังนั้นฉันจึงยึดติดกับ …
118 java  unit-testing  junit 

8
จะยืนยันมากกว่าการใช้ JUnit Assert ได้อย่างไร
ฉันมีค่าเหล่านี้มาจากการทดสอบ previousTokenValues[1] = "1378994409108" currentTokenValues[1] = "1378994416509" และฉันพยายาม // current timestamp is greater assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1])); ฉันจะได้รับjava.lang.AssertionErrorและการแก้ไขข้อบกพร่องคือdetailMessagenull ฉันจะยืนยันมากกว่าเงื่อนไขในการใช้งานได้อย่างไร JUnit
118 java  junit 

23
ข้อยกเว้นไม่พบคลาสเมื่อเรียกใช้การทดสอบ JUnit
ฉันได้รับข้อผิดพลาดนี้เมื่อเรียกใช้การทดสอบ JUnit ใน Eclipse: Class not found com.myproject.server.MyTest java.lang.ClassNotFoundException: com.myproject.server.MyTest at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) ฉันได้ลองเพิ่มJUnitไลบรารีใน classpath แล้วแม้ว่าฉันจะใช้ maven และไลบรารี JUnit อยู่ในการพึ่งพา POM ฉันได้ลองทำความสะอาดโปรเจ็กต์แล้วและสร้างเคสทดสอบ JUnit ใหม่โดยใช้ปลั๊กอิน JUnit สำหรับ Eclipse แต่ยังคงได้รับข้อผิดพลาดเหมือนเดิม
117 java  eclipse  junit 

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