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

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

14
วิธีการจำลอง localStorage ในการทดสอบหน่วย JavaScript
มีห้องสมุดไว้ล้อเลียนlocalStorageบ้างไหม? ฉันใช้Sinon.JSสำหรับการเยาะเย้ยจาวาสคริปต์อื่น ๆ ส่วนใหญ่และพบว่ามันยอดเยี่ยมจริงๆ การทดสอบครั้งแรกของฉันแสดงให้เห็นว่า localStorage ปฏิเสธที่จะกำหนดให้ใน firefox (sadface) ดังนั้นฉันอาจต้องการแฮ็คบางอย่างเกี่ยวกับสิ่งนี้: / ตัวเลือกของฉัน ณ ตอนนี้ (ตามที่ฉันเห็น) มีดังนี้: สร้างฟังก์ชันการตัดที่รหัสทั้งหมดของฉันใช้และล้อเลียน สร้างการจัดการสถานะ (อาจซับซ้อน) บางประเภท (สแน็ปช็อต localStorage ก่อนการทดสอบในการล้างข้อมูลการคืนค่าสแน็ปช็อต) สำหรับ localStorage ?????? คุณคิดอย่างไรกับแนวทางเหล่านี้และคุณคิดว่ามีวิธีอื่นที่ดีกว่าในการดำเนินการนี้หรือไม่? ไม่ว่าจะด้วยวิธีใดฉันจะใส่ "ไลบรารี" ที่เป็นผลลัพธ์ที่ฉันสร้างไว้ใน github เพื่อความดีงามของโอเพ่นซอร์ส

6
วิธีที่ดีที่สุดในการยืนยันความเท่าเทียมกันของ numpy.array?
ฉันต้องการทดสอบหน่วยสำหรับแอปของฉันและฉันต้องการเปรียบเทียบอาร์เรย์สองอาร์เรย์ เนื่องจากarray.__eq__ส่งคืนอาร์เรย์ใหม่ (จึงTestCase.assertEqualล้มเหลว) วิธีที่ดีที่สุดในการยืนยันความเท่าเทียมกันคืออะไร? ตอนนี้ฉันใช้ self.assertTrue((arr1 == arr2).all()) แต่ฉันไม่ชอบมันจริงๆ

4
แยกการทดสอบหน่วยและการทดสอบการรวมใน Go
มีแนวทางปฏิบัติที่ดีที่สุดสำหรับการแยกการทดสอบหน่วยและการทดสอบบูรณาการใน GoLang (เป็นพยาน) หรือไม่ ฉันมีการทดสอบหน่วยหลายอย่าง (ซึ่งไม่ต้องพึ่งพาทรัพยากรภายนอกใด ๆ จึงทำงานได้เร็วมาก) และการทดสอบการรวม (ซึ่งอาศัยทรัพยากรภายนอกใด ๆ จึงทำงานช้าลง) ดังนั้นฉันต้องการให้สามารถควบคุมได้ว่าจะรวมการทดสอบการรวมเข้าด้วยกันเมื่อฉันพูดgo testหรือไม่ เทคนิคที่ตรงไปตรงมาที่สุดดูเหมือนจะเป็นการกำหนดแฟล็ก -integrate ใน main: var runIntegrationTests = flag.Bool("integration", false , "Run the integration tests (in addition to the unit tests)") จากนั้นเพิ่ม if-statement ที่ด้านบนของการทดสอบการรวมทุกครั้ง: if !*runIntegrationTests { this.T().Skip("To run this test, use: go test -integration") } นี่คือสิ่งที่ดีที่สุดที่ฉันทำได้หรือไม่? …

2
วิธีรับค่าตอบแทนที่แตกต่างกันสำหรับการโทรหลายครั้งกับสายลับจัสมิน
สมมติว่าฉันกำลังสอดแนมวิธีการเช่นนี้: spyOn(util, "foo").andReturn(true); ฟังก์ชันภายใต้การทดสอบเรียกutil.fooใช้หลายครั้ง เป็นไปได้ไหมที่จะให้สายลับกลับมาtrueในครั้งแรกที่ถูกเรียก แต่กลับfalseครั้งที่สอง? หรือมีวิธีอื่นที่จะไปเกี่ยวกับเรื่องนี้?

2
Mock HttpContext สำหรับการทดสอบหน่วยตัวควบคุม. NET core MVC?
ฉันมีฟังก์ชันในคอนโทรลเลอร์ที่ฉันกำลังทดสอบหน่วยที่คาดหวังค่าในส่วนหัวของคำขอ http ฉันไม่สามารถเริ่มต้น HttpContext ได้เนื่องจากเป็นแบบอ่านอย่างเดียว ฟังก์ชันคอนโทรลเลอร์ของฉันต้องการค่าส่วนหัวคำขอ http สำหรับ "device-id" [TestMethod] public void TestValuesController() { ValuesController controller = new ValuesController(); //not valid controller.HttpContext is readonly //controller.HttpContext = new DefaultHttpContext(); var result = controller.Get(); Assert.AreEqual(result.Count(), 2); } มีวิธีตรงไปตรงมาในการดำเนินการโดยไม่ใช้ไลบรารีของบุคคลที่สามหรือไม่?

7
ฉันจะยืนยันว่า Iterable มีองค์ประกอบที่มีคุณสมบัติบางอย่างได้อย่างไร
สมมติว่าฉันต้องการทดสอบหน่วยวิธีด้วยลายเซ็นนี้: List<MyItem> getMyItems(); สมมติว่าMyItemเป็น Pojo ที่มีคุณสมบัติหลายอย่างซึ่งหนึ่งในนั้น"name"เข้าถึงได้ผ่านทางgetName(). สิ่งที่ฉันสนใจเกี่ยวกับการตรวจสอบก็คือList<MyItem>หรือใด ๆ ที่IterableมีสองMyItemอินสแตนซ์ซึ่ง"name"คุณสมบัติมีค่า"foo"และ"bar". หากคุณสมบัติอื่นไม่ตรงกันฉันไม่สนใจวัตถุประสงค์ของการทดสอบนี้จริงๆ หากชื่อตรงกันแสดงว่าสำเร็จแล้ว ฉันต้องการให้เป็นซับเดียวถ้าเป็นไปได้ นี่คือ "ไวยากรณ์หลอก" บางส่วนที่ฉันอยากจะทำ assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"}); Hamcrest จะดีสำหรับสิ่งประเภทนี้หรือไม่? ถ้าเป็นเช่นนั้นไวยากรณ์หลอกของฉันจะเป็นอย่างไร

13
คุณทดสอบวิธีส่วนตัวกับ NUnit ได้อย่างไร?
ฉันสงสัยว่าจะใช้ NUnit อย่างไรให้ถูกต้อง ขั้นแรกฉันสร้างโครงการทดสอบแยกต่างหากที่ใช้โครงการหลักของฉันเป็นข้อมูลอ้างอิง แต่ในกรณีนั้นฉันไม่สามารถทดสอบวิธีส่วนตัวได้ ฉันเดาว่าฉันต้องใส่รหัสทดสอบลงในรหัสหลักของฉัน?! - นั่นดูเหมือนจะไม่ใช่วิธีที่ถูกต้อง (ฉันไม่ชอบแนวคิดในการจัดส่งรหัสที่มีการทดสอบ) คุณทดสอบวิธีส่วนตัวกับ NUnit ได้อย่างไร?

4
ทดสอบว่าคลาสมีแอตทริบิวต์หรือไม่?
ฉันกำลังพยายามพัฒนา Test-First เล็กน้อยและฉันกำลังพยายามตรวจสอบว่าชั้นเรียนของฉันถูกทำเครื่องหมายด้วยแอตทริบิวต์: [SubControllerActionToViewDataAttribute] public class ScheduleController : Controller ฉันจะทดสอบหน่วยการเรียนรู้ได้อย่างไรว่าชั้นเรียนมีแอตทริบิวต์ที่กำหนดให้

4
การตั้งชื่อแพ็กเกจที่เหมาะสมสำหรับการทดสอบด้วยภาษา Go
ฉันได้เห็นกลยุทธ์การตั้งชื่อแพ็กเกจการทดสอบที่แตกต่างกันหลายแบบภายใน Go และต้องการทราบว่าข้อดีข้อเสียของแต่ละแบบคืออะไรและควรใช้แบบใด ยุทธศาสตร์ที่ 1: ชื่อไฟล์: github.com/user/myfunc.go package myfunc ชื่อไฟล์ทดสอบ: github.com/user/myfunc_test.go package myfunc ดูตัวอย่างbzip2 ยุทธศาสตร์ที่ 2: ชื่อไฟล์: github.com/user/myfunc.go package myfunc ชื่อไฟล์ทดสอบ: github.com/user/myfunc_test.go package myfunc_test import ( "github.com/user/myfunc" ) ดูลวดสำหรับตัวอย่าง ยุทธศาสตร์ที่ 3: ชื่อไฟล์: github.com/user/myfunc.go package myfunc ชื่อไฟล์ทดสอบ: github.com/user/myfunc_test.go package myfunc_test import ( . "myfunc" ) ดูตัวอย่างสตริง ไลบรารีมาตรฐาน Go ดูเหมือนจะใช้กลยุทธ์ 1 และ …
104 unit-testing  go 

2
ความแตกต่างระหว่าง setUp () และ setUpClass () ใน Python unittest คืออะไร?
อะไรคือความแตกต่างระหว่างsetUp()และsetUpClass()ในunittestกรอบPython ? เหตุใดจึงต้องจัดการการตั้งค่าด้วยวิธีเดียว ฉันต้องการที่จะเข้าใจในสิ่งที่เป็นส่วนหนึ่งของการติดตั้งจะทำในsetUp()และsetUpClass()ฟังก์ชั่นเช่นเดียวกับและtearDown()tearDownClass()

2
วิธีการตรวจสอบวิธีการเรียกวัตถุที่ไม่ใช่จำลอง?
ดูเหมือนว่าม็อกกิโตจะตรวจสอบได้ว่ามีการเรียกใช้วิธีการจำลองวัตถุหรือไม่และวัตถุจำลองมักจะมีบางอย่างเช่นกัน doReturn().when(mock object) แต่ฉันสามารถสร้างวัตถุจำลองและกำหนดdoReturn().when(mock object) แล้วตรวจสอบว่าวิธีการของวัตถุอื่นเรียกว่า? นี่คือสิ่งที่ฉันต้องการทำ: ฉันกำหนด mockEnvironment และตอบกลับไม่ว่าจะเกิดอะไรขึ้น แต่ฉันต้องการตรวจสอบวิธีการต่างๆของ anotherObj ถูกเรียกในกรณีที่แตกต่างกัน ต้องทำอย่างไร? public class BaseClass { private Environment mockEnvironment; @Test public void testcase () { setMockitoEnvironment(); response = foo(mockEnvironment, argument1); verify(anotherObj).codePath1(...); response = foo(mockEnvironment, argument2); verify(anotherObj).codePath2(...); } } //this method successfully return a response with any input //because …

4
การทดสอบตัวควบคุม RSpec - การตอบสนองที่ว่างเปล่าร่างกาย
ฉันติดปัญหาเมื่อทดสอบคอนโทรลเลอร์ด้วย RSpec - response.body call ส่งคืนสตริงว่างเสมอ ในเบราว์เซอร์ทุกอย่างแสดงผลอย่างถูกต้องและการทดสอบคุณสมบัติแตงกวาดูเหมือนจะทำให้ถูกต้อง แต่ RSpec ก็ล้มเหลวทุกครั้ง ความคาดหวังอื่น ๆ เกี่ยวกับวัตถุตอบสนองเช่นการresponse.should render_template('index')ส่งผ่านโดยไม่มีปัญหาใด ๆ คุณเคยพบปัญหานี้มาก่อนหรือไม่? บางที html ตอบกลับสามารถหาได้ด้วยวิธีอื่น? สำหรับเวอร์ชัน Rails 2.1.0, RSpec 1.2.7

30
ถ้าการทดสอบหน่วยดีมากทำไมไม่มี บริษัท อื่นทำ [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา บริษัท ซอฟต์แวร์ตัวจริงแห่งแรกที่ฉันทำงานนั้นเกี่ยวกับการทดสอบหน่วย (NUnit) ฉันไม่รู้ว่าตอนนั้นเราเป็นคนยึดติดจริงๆ - ฉันไม่รู้ว่าการครอบคลุมโค้ดของเราเป็นอย่างไรและฉันกำลังเขียนการทดสอบหน่วยส่วนใหญ่ ตั้งแต่นั้นมาฉันได้พบกับ บริษัท บางแห่งที่ทำการทดสอบมากมาย แต่เป็นการทดสอบเก้าอี้: อาศัยบุคคลที่อยู่ที่นั่นมีความเข้ากันได้ต่ำและมีโอกาสจับข้อบกพร่องต่ำ ทัศนคติอื่น ๆ ก็คือมันเป็นสิ่งที่พวกเขาอยากจะไปด้วย "ในอนาคต"; โดยพื้นฐานแล้วเมื่อเงินตกลงมาจากท้องฟ้า ฉันพลาดการทดสอบหน่วย - มันทำให้ชีวิตง่ายขึ้น แต่ฉันพบว่าเมื่อฉันมองหางานใหม่การทดสอบหน่วยอาจเป็นสิ่งที่ บริษัท ต่างๆอยากจะ "ก้าวไปด้วย" ในอนาคตหรือสิ่งที่พวกเขาไม่ทำเลย (เอ่อมันผ่านมาระยะหนึ่งแล้ว ตอนนี้!) ฉันจะบอกว่า 60-75% ของความต้องการงานที่ฉันดูในช่วง 2 ปีที่ผ่านมาไม่ได้อยู่ในรายการทดสอบหน่วยเลย ฉันคิดได้เพียงหนึ่งหรือสองข้อที่มีประสบการณ์การทดสอบหน่วยเป็นข้อกำหนด (สำหรับตำแหน่งนักพัฒนาระดับกลาง) คำถามคือมีอะไรหายไป ? ฉันคิดว่ามันทำให้ผู้คนมีประสิทธิผลมากขึ้น แต่นั่นก็ต่อเมื่อใช้เวลาพอสมควรในการลงมือทำจริงๆ ไม่มีการศึกษาที่ดีเกี่ยวกับการประหยัดต้นทุนของการทดสอบหน่วยหรือไม่? เป็นประเภทของ บริษัท ที่ฉันกำลังมองหาหรือไม่? แก้ไข: …
103 unit-testing 

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

6
Jest: วิธีที่ดีกว่าในการปิดใช้งานคอนโซลภายในการทดสอบหน่วย
ฉันสงสัยว่ามีวิธีที่ดีกว่าในการปิดใช้งานข้อผิดพลาดของคอนโซล ภายในการทดสอบ Jest เฉพาะหรือไม่ (เช่นคืนค่าคอนโซลเดิมก่อน / หลังการทดสอบแต่ละครั้ง) นี่คือแนวทางปัจจุบันของฉัน: describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses …

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