คำถามติดแท็ก spring-test

17
การทดสอบ JUnit ผ่านใน Eclipse แต่ล้มเหลวใน Maven Surefire
ฉันได้เขียนการทดสอบ JUnit โดยใช้ไลบรารี JUnit 4 และ Spring-test เมื่อฉันเรียกใช้การทดสอบภายใน Eclipse ให้รันได้ดีและผ่าน แต่เมื่อฉันเรียกใช้โดยใช้ Maven (ในระหว่างกระบวนการสร้าง) พวกเขาล้มเหลวโดยให้ข้อผิดพลาดเกี่ยวกับสปริง ฉันไม่แน่ใจว่าอะไรเป็นสาเหตุของปัญหา JUnit, Surefire หรือ Spring นี่คือรหัสทดสอบการกำหนดค่าสปริงและข้อยกเว้นที่ได้รับจาก Maven: PersonServiceTest.java package com.xyz.person.test; import static com.xyz.person.util.FjUtil.toFjList; import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import …

7
วิธีตั้งค่าตัวแปรสภาพแวดล้อมหรือคุณสมบัติของระบบในการทดสอบสปริง
ฉันต้องการเขียนการทดสอบบางอย่างที่ตรวจสอบการกำหนดค่า XML Spring ของ WAR ที่ปรับใช้ น่าเสียดายที่ถั่วบางชนิดต้องการให้มีการตั้งค่าตัวแปรสภาพแวดล้อมหรือคุณสมบัติของระบบ ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมก่อนที่ถั่วสปริงจะเริ่มต้นได้อย่างไรเมื่อใช้รูปแบบการทดสอบที่สะดวกกับ @ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:whereever/context.xml") public class TestWarSpringContext { ... } หากฉันกำหนดค่าบริบทของแอปพลิเคชันด้วยคำอธิบายประกอบฉันไม่เห็นจุดเชื่อมต่อที่ฉันสามารถทำอะไรบางอย่างได้ก่อนที่บริบทสปริงจะเริ่มต้น

2
อะไรคือความแตกต่างระหว่าง SpringJUnit4ClassRunner และ SpringRunner
เมื่อใดก็ตามที่ฉันเห็นบล็อกโพสต์ที่เกี่ยวข้องกับการทดสอบฤดูใบไม้ผลิฉันเห็นชั้นเรียนเหล่านี้ แต่ไม่เข้าใจความแตกต่างที่แท้จริง: @RunWith(SpringRunner.class) @RunWith(SpringJUnit4ClassRunner.class)

7
ย้อนกลับธุรกรรมหลังจาก @Test
ก่อนอื่นฉันพบเธรดจำนวนมากใน StackOverflow เกี่ยวกับเรื่องนี้ แต่ไม่มีสิ่งใดที่ช่วยฉันได้จริงๆขอโทษที่ถามคำถามที่อาจซ้ำกัน ฉันกำลังทำการทดสอบ JUnit โดยใช้การทดสอบสปริงโค้ดของฉันมีลักษณะเช่นนี้ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {}) public class StudentSystemTest { @Autowired private StudentSystem studentSystem; @Before public void initTest() { // set up the database, create basic structure for testing } @Test public void test1() { } ... } ปัญหาของฉันคือฉันต้องการให้การทดสอบของฉันไม่มีผลต่อการทดสอบอื่น ๆ ดังนั้นฉันต้องการสร้างบางสิ่งเช่นย้อนกลับสำหรับการทดสอบแต่ละครั้ง ฉันค้นหาสิ่งนี้มามากมาย แต่ฉันไม่พบอะไรเลย ฉันใช้ Hibernate …

6
MockMvc ไม่สามารถจัดการอักขระ UTF-8 อีกต่อไปด้วย Spring Boot 2.2.0 ปล่อย
หลังจากฉันอัพเกรดเป็น2.2.0.RELEASESpring Boot เวอร์ชั่นที่ออกใหม่การทดสอบบางอย่างของฉันล้มเหลว ปรากฏว่าMediaType.APPLICATION_JSON_UTF8ได้รับการคัดค้านและจะไม่ส่งคืนเป็นประเภทเนื้อหาเริ่มต้นจากวิธีการควบคุมที่ไม่ได้ระบุประเภทเนื้อหาอย่างชัดเจน ทดสอบรหัสเช่น String content = mockMvc.perform(get("/some-api") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn() .getResponse() .getContentAsString(); ทันใดนั้นไม่ทำงานอีกต่อไปเนื่องจากประเภทเนื้อหาไม่ตรงกันดังที่แสดงด้านล่าง java.lang.AssertionError: Content type Expected :application/json;charset=UTF-8 Actual :application/json การเปลี่ยนรหัสเพื่อ.andExpect(content().contentType(MediaType.APPLICATION_JSON))แก้ไขปัญหาในตอนนี้ แต่ตอนนี้เมื่อเปรียบเทียบcontentกับวัตถุที่เป็นอนุกรมที่คาดไว้ยังคงไม่ตรงกันหากมีอักขระพิเศษใด ๆ ในวัตถุ ปรากฏว่า.getContentAsString()วิธีการดังกล่าวไม่ได้ใช้ประโยชน์จากการเข้ารหัสอักขระ UTF-8 ตามค่าเริ่มต้น (เพิ่มเติม) java.lang.AssertionError: Response content expected:<[{"description":"Er hörte leise Schritte hinter sich."}]> but was:<[{"description":"Er hörte leise Schritte hinter sich."}]> Expected :[{"description":"Er hörte …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.