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

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

8
.Net Core Unit Testing - Mock IOptions <T>
ฉันรู้สึกว่าฉันพลาดอะไรบางอย่างที่เห็นได้ชัดที่นี่ ฉันมีคลาสที่ต้องการการฉีดตัวเลือกโดยใช้รูปแบบ. Net Core IOptions (?) เมื่อฉันไปทดสอบหน่วยชั้นเรียนนั้นฉันต้องการจำลองเวอร์ชันต่างๆของตัวเลือกในการตรวจสอบการทำงานของชั้นเรียน มีใครรู้วิธีจำลอง / สร้างอินสแตนซ์ / เติมข้อมูล IOptions นอกคลาส Startup ได้อย่างถูกต้อง นี่คือตัวอย่างบางส่วนของคลาสที่ฉันทำงานด้วย: รูปแบบการตั้งค่า / ตัวเลือก using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace OptionsSample.Models { public class SampleOptions { public string FirstSetting { get; set; } public int SecondSetting { get; set; } } …

16
ข้อมูลแบบสุ่มในการทดสอบหน่วย
ฉันมีเพื่อนร่วมงานที่เขียนการทดสอบหน่วยสำหรับวัตถุที่กรอกข้อมูลในฟิลด์ด้วยข้อมูลแบบสุ่ม เหตุผลของเขาคือให้การทดสอบที่กว้างกว่าเนื่องจากมันจะทดสอบค่าที่แตกต่างกันมากมายในขณะที่การทดสอบปกติจะใช้ค่าคงที่เดียวเท่านั้น ฉันได้ให้เหตุผลหลายอย่างกับเขาในเรื่องนี้เหตุผลหลักคือ: ค่าสุ่มหมายความว่าการทดสอบไม่สามารถทำซ้ำได้อย่างแท้จริง (ซึ่งหมายความว่าหากการทดสอบสามารถล้มเหลวแบบสุ่มได้ก็สามารถทำได้บนเซิร์ฟเวอร์การสร้างและการทำลายโครงสร้าง) ถ้ามันเป็นค่าสุ่มและการทดสอบล้มเหลวเราจำเป็นต้อง a) แก้ไขวัตถุและ b) บังคับให้เราทดสอบค่านั้นทุกครั้งเพื่อให้เรารู้ว่ามันใช้งานได้ แต่เนื่องจากเป็นการสุ่มเราจึงไม่ทราบว่าค่านั้นคืออะไร เพื่อนร่วมงานอีกคนที่เพิ่ม: หากฉันกำลังทดสอบข้อยกเว้นค่าสุ่มจะไม่ทำให้แน่ใจว่าการทดสอบสิ้นสุดลงในสถานะที่คาดหวัง ข้อมูลแบบสุ่มใช้สำหรับการชะล้างระบบและทดสอบโหลดไม่ใช่สำหรับการทดสอบหน่วย ใครสามารถเพิ่มเหตุผลเพิ่มเติมที่ฉันสามารถให้เขาเพื่อให้เขาหยุดทำสิ่งนี้ได้หรือไม่? (หรืออีกวิธีหนึ่งนี่เป็นวิธีที่ยอมรับได้ในการเขียนการทดสอบหน่วยและฉันและเพื่อนร่วมงานคนอื่น ๆ ของฉันผิดหรือเปล่า?)

6
RSpec vs Cucumber (เรื่อง RSpec) [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม &amp; คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อใดที่ฉันควรใช้ specs สำหรับแอปพลิเคชั่น Rails และเมื่อ Cucumber (อดีต rspec-Stories) ฉันรู้ว่าทั้งสองทำงานและใช้สเปคอย่างแน่นอน แต่มันก็ยังรู้สึกแปลก ๆ ที่จะใช้แตงกวา มุมมองปัจจุบันของฉันเกี่ยวกับเรื่องนี้คือมันสะดวกในการใช้แตงกวาเมื่อคุณใช้แอปพลิเคชันสำหรับลูกค้าและไม่เข้าใจว่าระบบทั้งหมดควรจะทำงานอย่างไร แต่ถ้าฉันทำโครงการของตัวเองล่ะ ตลอดเวลาฉันรู้ว่าส่วนต่าง ๆ ของระบบมีการโต้ตอบอย่างไร สิ่งที่ฉันต้องทำก็คือเขียนหน่วยการทดสอบจำนวนมาก สถานการณ์ที่เป็นไปได้เมื่อฉันต้องการแตงกวาคืออะไร? และเป็นคำถามที่สองที่สอดคล้องกัน: ฉันต้องเขียนรายละเอียดถ้าฉันเขียนเรื่องแตงกวา? จะไม่เป็นการทดสอบสองครั้งในสิ่งเดียวกันหรือไม่


22
การทดสอบหน่วยสำหรับรหัส C ++ - เครื่องมือและระเบียบวิธี [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังทำงานกับระบบ c ++ ขนาดใหญ่ที่อยู่ระหว่างการพัฒนามาสองสามปีแล้ว ในฐานะที่เป็นส่วนหนึ่งของความพยายามในการปรับปรุงคุณภาพของโค้ดที่มีอยู่เราจึงมีส่วนร่วมในโครงการปรับโครงสร้างระยะยาวขนาดใหญ่ คุณรู้จักเครื่องมือที่ดีที่สามารถช่วยฉันเขียนการทดสอบหน่วยใน C ++ ได้หรือไม่? อาจจะคล้ายกับ Junit หรือ Nunit? ใครสามารถให้คำแนะนำที่ดีเกี่ยวกับวิธีการเขียนการทดสอบหน่วยสำหรับโมดูลที่เขียนโดยไม่คำนึงถึงการทดสอบหน่วย

15
PHPUnit: ยืนยันว่าอาร์เรย์สองอาร์เรย์เท่ากัน แต่ลำดับขององค์ประกอบไม่สำคัญ
อะไรคือวิธีที่ดีในการยืนยันว่าอาร์เรย์ของออบเจ็กต์สองอาร์เรย์เท่ากันเมื่อลำดับขององค์ประกอบในอาร์เรย์ไม่สำคัญหรือแม้กระทั่งอาจมีการเปลี่ยนแปลง


11
ทำไมต้องใช้ JUnit ในการทดสอบ
บางทีคำถามของฉันอาจจะเป็นมือใหม่ แต่ฉันก็ไม่เข้าใจสถานการณ์ที่จะใช้ จูนิทเหรอ? ไม่ว่าฉันจะเขียนแอปพลิเคชั่นธรรมดา ๆ หรือใช้งานขนาดใหญ่ฉันจะทดสอบด้วยSystem.outข้อความและมันก็ค่อนข้างง่ายสำหรับฉัน ทำไมต้องสร้างคลาสทดสอบด้วย JUnit ซึ่งเป็นโฟลเดอร์ที่ไม่จำเป็นในโปรเจ็กต์หากเรายังต้องเรียกใช้เมธอดเดิมตรวจสอบสิ่งที่ส่งคืนแล้วเรามีค่าใช้จ่ายในการใส่คำอธิบายประกอบทุกอย่าง ทำไมไม่เขียนคลาสและทดสอบพร้อมกันSystem.outแต่ไม่สร้างคลาสแบบทดสอบ ปล. ฉันไม่เคยทำงานในโครงการขนาดใหญ่ที่ฉันเพิ่งเรียนรู้ แล้วจุดประสงค์คืออะไร?
131 java  unit-testing  junit  tdd 

6
ยืนยันว่าฟังก์ชัน / วิธีการไม่ได้ถูกเรียกโดยใช้ Mock
ฉันใช้ไลบรารีจำลองเพื่อทดสอบแอปพลิเคชันของฉัน แต่ฉันต้องการยืนยันว่าไม่ได้เรียกใช้ฟังก์ชันบางอย่าง เอกสารจำลองพูดคุยเกี่ยวกับวิธีการเช่นmock.assert_called_withและmock.assert_called_once_withแต่ฉันไม่พบอะไรที่เหมือนmock.assert_not_calledหรือสิ่งที่เกี่ยวข้องกับการตรวจสอบการเยาะเย้ยถูกไม่ได้เรียกว่า ฉันสามารถไปกับสิ่งต่อไปนี้แม้ว่ามันจะดูไม่เท่หรือไม่พีโธนิก: def test_something: # some actions with patch('something') as my_var: try: # args are not important. func should never be called in this test my_var.assert_called_with(some, args) except AssertionError: pass # this error being raised means it's ok # other stuff มีความคิดอย่างไรที่จะทำสิ่งนี้ให้สำเร็จ?

9
การทดสอบหน่วยของฟังก์ชันส่วนตัวด้วยมอคค่าและโหนด js
ฉันใช้มอคค่าเพื่อทดสอบหน่วยแอปพลิเคชันที่เขียนขึ้นสำหรับ node.js ฉันสงสัยว่าเป็นไปได้ไหมที่จะใช้ฟังก์ชันทดสอบหน่วยที่ยังไม่ได้ส่งออกในโมดูล ตัวอย่าง: ฉันมีฟังก์ชันมากมายที่กำหนดไว้เช่นนี้ใน foobar.js function private_foobar1(){ ... } function private_foobar2(){ ... } และฟังก์ชันบางอย่างที่ส่งออกเป็นสาธารณะ: exports.public_foobar3 = function(){ ... } กรณีทดสอบมีโครงสร้างดังนี้: describe("private_foobar1", function() { it("should do stuff", function(done) { var stuff = foobar.private_foobar1(filter); should(stuff).be.ok; should(stuff)..... เห็นได้ชัดว่าสิ่งนี้ใช้ไม่ได้เนื่องจากprivate_foobar1ไม่มีการส่งออก วิธีที่ถูกต้องในการทดสอบหน่วยส่วนตัวคืออะไร? มอคค่ามีวิธีการในตัวสำหรับการทำเช่นนั้นหรือไม่?

7
การล้อเลียนกับการสอดแนมในกรอบการล้อเลียน
ในกรอบการเยาะเย้ยคุณสามารถล้อเลียนวัตถุหรือสอดแนมได้ อะไรคือความแตกต่างระหว่างทั้งสองและเมื่อใดที่ฉันจะ / ควรใช้อีกอันหนึ่ง? ตัวอย่างเช่นเมื่อมองไปที่Mockitoฉันเห็นสิ่งที่คล้ายกันถูกทำโดยใช้สายลับและล้อเลียนแต่ฉันไม่แน่ใจว่าความแตกต่างระหว่างสองสิ่งนี้

13
วิธีการทดสอบหน่วยด้วย ILogger ใน ASP.NET Core
นี่คือตัวควบคุมของฉัน: public class BlogController : Controller { private IDAO&lt;Blog&gt; _blogDAO; private readonly ILogger&lt;BlogController&gt; _logger; public BlogController(ILogger&lt;BlogController&gt; logger, IDAO&lt;Blog&gt; blogDAO) { this._blogDAO = blogDAO; this._logger = logger; } public IActionResult Index() { var blogs = this._blogDAO.GetMany(); this._logger.LogInformation("Index page say hello", new object[0]); return View(blogs); } } อย่างที่คุณเห็นฉันมีการอ้างอิง 2 รายการคือ a IDAOและILogger …

4
การสร้างโค้ดภายใน แต่ใช้สำหรับการทดสอบหน่วยจากโครงการอื่น
เราทำการทดสอบหน่วยของเราทั้งหมดในโครงการของตนเอง เราพบว่าเราต้องทำให้บางคลาสเป็นแบบสาธารณะแทนที่จะเป็นแบบภายในเพื่อการทดสอบหน่วย มีอยู่แล้วเพื่อหลีกเลี่ยงการทำเช่นนี้ อะไรคือความหมายของความทรงจำโดยการทำให้ชั้นเรียนเป็นแบบสาธารณะแทนที่จะถูกผนึก?
129 c#  unit-testing  scope 

14
อะไรคือความแตกต่างหลักระหว่าง TDD และ BDD? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่? อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน4 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ การทดสอบขับเคลื่อนการพัฒนาเป็นเรื่องที่น่าตื่นเต้นในชุมชน. NET ในช่วงสองสามปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันได้ยินเสียงบ่นในชุมชน ALT.NET เกี่ยวกับ BDD มันคืออะไร? อะไรทำให้แตกต่างจาก TDD?
129 unit-testing  tdd  bdd 

7
ไม่ได้กำหนดบริการทดสอบในโมดูลผลตอบแทนเชิงมุม
ฉันพยายามเรียกใช้การทดสอบหน่วยบริการเริ่มต้นในโครงการของฉัน (นำมาจากโครงการ Angular Seed บน GitHub) แต่ฉันได้รับข้อผิดพลาด "ไม่ได้กำหนดโมดูล" ฉันได้อ่านแล้วว่ามันอาจเกี่ยวข้องกับลำดับของไฟล์ JavaScript ที่อ้างอิงแต่ดูเหมือนจะไม่สามารถใช้งานได้ดังนั้นหวังว่าคุณคนใดคนหนึ่งจะสามารถช่วยได้ การกำหนดค่าของฉันสำหรับการทดสอบมีลักษณะดังนี้: basePath = '../'; ไฟล์ = [ 'public / javascripts / lib / jquery-1.8.2.js', 'public / javascripts / lib / angular.js', 'public / javascripts / lib / angular- .js', 'public / app.js ', ' public / controllers / .js …

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