คำถามติดแท็ก unit-testing

การทดสอบหน่วยเป็นวิธีการที่แต่ละหน่วยของรหัสที่มาจะถูกทดสอบเพื่อตรวจสอบว่าพวกเขาจะเหมาะสำหรับการใช้งาน

4
Jest: วิธีทดสอบคีย์ออบเจ็กต์และคุณสมบัติ
ฉันมีmapModuleที่ที่ฉันนำเข้าส่วนประกอบและส่งออก: import ComponentName from '../components/ComponentName'; export default { name: ComponentName, }; ฉันจะทดสอบได้อย่างไรว่าmapModuleมีคีย์ค่าที่ส่งออกที่ถูกต้องและไม่เป็นโมฆะหรือไม่ได้กำหนดไว้

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 …

9
จำลองการพึ่งพาในเรื่องตลกด้วย typescript
เมื่อทดสอบโมดูลที่มีการอ้างอิงในไฟล์อื่น เมื่อกำหนดโมดูลนั้นให้เป็นjest.Mocktypescript จะทำให้เกิดข้อผิดพลาดที่เมธอดmockReturnThisOnce(หรือเมธอด jest.Mock อื่น ๆ ) ไม่มีอยู่ในการอ้างอิงนั่นเป็นเพราะมันถูกพิมพ์ไว้ก่อนหน้านี้ วิธีที่เหมาะสมในการรับ typescript เพื่อสืบทอดประเภทจาก jest.Mock คืออะไร? นี่คือตัวอย่างสั้น ๆ การพึ่งพา const myDep = (name: string) => name; export default myDep; test.ts import * as dep from '../depenendency'; jest.mock('../dependency'); it('should do what I need', () => { //this throws ts error // Property mockReturnValueOnce does …

4
เหตุใดการยืนยันนี้จึงทำให้เกิดข้อยกเว้นของรูปแบบเมื่อเปรียบเทียบโครงสร้าง
ฉันพยายามยืนยันความเท่าเทียมกันของสองSystem.Drawing.Sizeโครงสร้างและฉันได้รับข้อยกเว้นของรูปแบบแทนการยืนยันความล้มเหลวที่คาดไว้ [TestMethod] public void AssertStructs() { var struct1 = new Size(0, 0); var struct2 = new Size(1, 1); //This throws a format exception, "System.FormatException: Input string was not in a correct format." Assert.AreEqual(struct1, struct2, "Failed. Expected {0}, actually it is {1}", struct1, struct2); //This assert fails properly, "Failed. Expected {Width=0, …

14
ควรเป็น "จัด - ยืนยัน - กระทำ - ยืนยัน" หรือไม่
เกี่ยวกับรูปแบบการทดสอบแบบคลาสสิกของArrange-Act-Assertฉันมักพบว่าตัวเองมีการเพิ่มการยืนยันตัวตนที่มาก่อนพระราชบัญญัติ วิธีนี้ทำให้ฉันรู้ว่าการยืนยันที่ผ่านนั้นผ่านไปแล้วอันเป็นผลมาจากการกระทำ ฉันคิดว่ามันคล้ายคลึงกับสีแดงในตัวปรับปฏิกิริยาสีแดง - เขียวซึ่งถ้าฉันเห็นแถบสีแดงในระหว่างการทดสอบเท่านั้นฉันจะรู้ว่าแถบสีเขียวหมายถึงฉันได้เขียนโค้ดที่สร้างความแตกต่าง ถ้าฉันเขียนแบบทดสอบที่ผ่านรหัสใด ๆก็จะตอบสนองได้ ในทำนองเดียวกันในส่วนของการจัดเตรียม - การยืนยัน - การกระทำ - การยืนยันหากการยืนยันครั้งแรกของฉันล้มเหลวฉันรู้ว่าพระราชบัญญัติใด ๆ จะผ่านการยืนยันขั้นสุดท้าย - ดังนั้นจึงไม่ได้ตรวจสอบอะไรเกี่ยวกับพระราชบัญญัติ การทดสอบของคุณเป็นไปตามรูปแบบนี้หรือไม่ ทำไมหรือทำไมไม่? การชี้แจงการอัปเดต : การยืนยันครั้งแรกนั้นตรงกันข้ามกับการยืนยันขั้นสุดท้าย ไม่ใช่การยืนยันว่าการจัดเรียงใช้ได้ผล เป็นการยืนยันว่าพระราชบัญญัติยังไม่ได้ผล

5
ยืนยันว่ามีการเรียกเมธอดในการทดสอบหน่วย Python
สมมติว่าฉันมีรหัสต่อไปนี้ในการทดสอบหน่วย Python: aw = aps.Request("nv1") aw2 = aps.Request("nv2", aw) มีวิธีง่ายๆในการยืนยันว่ามีการเรียกวิธีการเฉพาะ (ในกรณีของฉันaw.Clear()) ในระหว่างบรรทัดที่สองของการทดสอบหรือไม่? เช่นมีบางอย่างเช่นนี้: #pseudocode: assertMethodIsCalled(aw.Clear, lambda: aps.Request("nv2", aw))

11
ทดสอบข้อยกเว้นที่คาดไว้ใน Kotlin
ใน Java โปรแกรมเมอร์สามารถระบุข้อยกเว้นที่คาดไว้สำหรับกรณีทดสอบ JUnit เช่นนี้: @Test(expected = ArithmeticException.class) public void omg() { int blackHole = 1 / 0; } ฉันจะทำสิ่งนี้ใน Kotlin ได้อย่างไร ฉันได้ลองใช้รูปแบบไวยากรณ์สองรูปแบบแล้ว แต่ไม่ได้ผล: import org.junit.Test // ... @Test(expected = ArithmeticException) fun omg() Please specify constructor invocation; classifier 'ArithmeticException' does not have a companion object @Test(expected = ArithmeticException.class) fun omg() …

8
จะทดสอบส่วนประกอบที่ขึ้นอยู่กับพารามิเตอร์จาก ActivatedRoute ได้อย่างไร
ฉันกำลังทดสอบหน่วยส่วนประกอบที่ใช้ในการแก้ไขวัตถุ อ็อบเจ็กต์มีเอกลักษณ์idที่ใช้เพื่อดึงอ็อบเจ็กต์เฉพาะจากอาร์เรย์ของอ็อบเจ็กต์ที่โฮสต์ในเซอร์วิส เฉพาะidถูกจัดหาผ่านพารามิเตอร์ที่ส่งผ่านทางเส้นทางโดยเฉพาะผ่านActivatedRouteคลาส ตัวสร้างมีดังนี้: constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) { } ngOnInit() { this._curRoute.params.subscribe(params => { this.userId = params['id']; this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0]; ฉันต้องการเรียกใช้การทดสอบหน่วยพื้นฐานในส่วนประกอบนี้ อย่างไรก็ตามฉันไม่แน่ใจว่าฉันจะฉีดidพารามิเตอร์ได้อย่างไรและส่วนประกอบต้องการพารามิเตอร์นี้ โดยวิธีการ: ฉันมีล้อเลียนสำหรับSessionบริการอยู่แล้วดังนั้นจึงไม่ต้องกังวลที่นั่น

12
วิธีตั้งค่าการทดสอบหน่วยสำหรับ Visual Studio C ++
ฉันมีปัญหาในการหาวิธีตั้งค่าเฟรมเวิร์กการทดสอบและใช้งานได้ในVisual Studio 2008สำหรับC++ชุดทดสอบหน่วยในตัว ลิงก์หรือบทช่วยสอนใด ๆ จะได้รับการชื่นชม

16
@BeforeClass และการสืบทอด - ลำดับการดำเนินการ
ฉันมีคลาสพื้นฐานนามธรรมซึ่งฉันใช้เป็นฐานสำหรับการทดสอบหน่วยของฉัน (TestNG 5.10) ในคลาสนี้ฉันเตรียมใช้งานสภาพแวดล้อมทั้งหมดสำหรับการทดสอบการตั้งค่าการแมปฐานข้อมูล ฯลฯ คลาสนามธรรมนี้มีวิธีการที่มี@BeforeClassคำอธิบายประกอบซึ่งจะทำการเริ่มต้น ต่อไปฉันจะขยายคลาสนั้นด้วยคลาสเฉพาะซึ่งฉันมี@Testวิธีการและ@BeforeClassวิธีการ วิธีการเหล่านี้ทำการกำหนดค่าเริ่มต้นเฉพาะคลาสของสภาพแวดล้อม (เช่นใส่บันทึกบางส่วนลงในฐานข้อมูล) ฉันจะบังคับใช้คำสั่งเฉพาะของ@BeforeClassวิธีการที่มีคำอธิบายประกอบได้อย่างไร ฉันต้องการคนที่มาจากคลาสฐานนามธรรมเพื่อดำเนินการก่อนคลาสขยาย ตัวอย่าง: abstract class A { @BeforeClass doInitialization() {...} } class B extends A { @BeforeClass doSpecificInitialization() {...} @Test doTests() {...} } คำสั่งซื้อที่คาดหวัง: A.doInitialization B.doSpecificInitialization B.doTests ลำดับจริง: B.doSpecificInitialization // <- crashes, as the base init is missing (A.doInitialization // <---not …

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

11
ข้อเสนอแนะสำหรับการทดสอบโค้ด extjs ในเบราว์เซอร์ควรใช้ซีลีเนียมหรือไม่
เราใช้ซีลีเนียมประสบความสำเร็จอย่างมากในการจัดการกับการทดสอบเว็บไซต์ระดับสูง (นอกเหนือจากการทดสอบเกี่ยวกับงูหลามในระดับโมดูล) อย่างไรก็ตามตอนนี้เรากำลังใช้ extjs สำหรับเพจจำนวนมากและพิสูจน์ได้ยากที่จะรวมการทดสอบซีลีเนียมสำหรับส่วนประกอบที่ซับซ้อนเช่นกริด มีใครประสบความสำเร็จในการเขียนการทดสอบอัตโนมัติสำหรับหน้าเว็บที่ใช้ extjs บ้าง? Googling จำนวนมากพบผู้ที่มีปัญหาคล้ายกัน แต่มีคำตอบเพียงไม่กี่คำ ขอบคุณ!

7
วิธีการเยาะเย้ยทรัพย์สินแบบอ่านอย่างเดียวด้วยการเยาะเย้ย?
คุณล้อเลียนทรัพย์สินแบบอ่านอย่างเดียวด้วยการเยาะเย้ยได้อย่างไร? ฉันเหนื่อย: setattr(obj.__class__, 'property_to_be_mocked', mock.Mock()) แต่ปัญหาคือมันใช้กับทุกอินสแตนซ์ของชั้นเรียน ... ซึ่งทำให้การทดสอบของฉันแตก คุณมีความคิดอื่น ๆ อีกไหม? ฉันไม่ต้องการเยาะเย้ยวัตถุเต็มเฉพาะคุณสมบัติเฉพาะนี้

3
วิธีการจำลอง ModelState.IsValid โดยใช้ Moq framework?
ฉันกำลังตรวจสอบ ModelState.IsValidวิธีการดำเนินการของคอนโทรลเลอร์ที่สร้างพนักงานแบบนี้: [HttpPost] public virtual ActionResult Create(EmployeeForm employeeForm) { if (this.ModelState.IsValid) { IEmployee employee = this._uiFactoryInstance.Map(employeeForm); employee.Save(); } // Etc. } ฉันต้องการจำลองในวิธีการทดสอบหน่วยของฉันโดยใช้ Moq Framework ฉันพยายามล้อเลียนแบบนี้: var modelState = new Mock<ModelStateDictionary>(); modelState.Setup(m => m.IsValid).Returns(true); แต่สิ่งนี้ทำให้เกิดข้อยกเว้นในกรณีทดสอบหน่วยของฉัน ใครสามารถช่วยฉันที่นี่?

2
วิธีทดสอบรหัส async โดยใช้ MSTest
ฉันกำลังเขียนโค้ด async แบบธรรมดา ๆ เพียงแค่บันทึกไฟล์นอกเธรด ฉันต้องการทดสอบโค้ดนี้โดยใช้กรอบการทดสอบหน่วย MSTest ใน Microsoft Visual Studio Team System 2008 ฉันต้องทำอย่างไร ฉันต้องการบล็อกวิธีทดสอบอย่างง่าย ๆ จนกว่าเมธอดจะกลับมา ฉันพอจะนึกภาพออกได้บ้าง แต่ฉันรู้สึกทึ่งมากว่าไม่มีแนวทางปฏิบัติที่ดีที่สุดหรือชั้นเรียนผู้ช่วยเกี่ยวกับเรื่องนี้ ฉันเห็นมากสำหรับ Silverlight แต่ไม่มีอะไรทั่วไป

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