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

Test-Driven Development (TDD) เกี่ยวข้องกับการเขียนการทดสอบอัตโนมัติที่ล้มเหลวเพื่อระบุสิ่งที่จะสร้าง จากนั้นทำการทดสอบให้ผ่านโดยการเขียนโค้ดที่ตรงตามเงื่อนไขที่ทดสอบ ในที่สุดโค้ดจะถูก refactored

30
ฉันจะทดสอบฟังก์ชั่นส่วนตัวหรือชั้นเรียนที่มีวิธีการส่วนตัวเขตข้อมูลหรือชั้นในได้อย่างไร
ฉันจะทดสอบหน่วย (โดยใช้ xUnit) คลาสที่มีวิธีการส่วนตัวภายในเขตข้อมูลหรือคลาสที่ซ้อนกันได้อย่างไร หรือฟังก์ชั่นที่ทำให้เป็นส่วนตัวโดยมีการเชื่อมโยงภายใน ( staticใน C / C ++) หรืออยู่ในเนมสเปซส่วนตัว ( ไม่ระบุชื่อ )? ดูเหมือนว่าการเปลี่ยนแปลงตัวปรับการเข้าถึงสำหรับวิธีการหรือฟังก์ชั่นจะไม่สามารถทำการทดสอบได้
2727 java  unit-testing  tdd 

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

5
วิธีการตรวจสอบว่าวิธีการเฉพาะไม่ได้เรียกว่าใช้ Mockito?
วิธีการตรวจสอบว่าวิธีการไม่ได้เรียกว่าการพึ่งพาของวัตถุ? ตัวอย่างเช่น: public interface Dependency { void someMethod(); } public class Foo { public bar(final Dependency d) { ... } } ด้วยการทดสอบฟู: public class FooTest { @Test public void dependencyIsNotCalled() { final Foo foo = new Foo(...); final Dependency dependency = mock(Dependency.class); foo.bar(dependency); **// verify here that someMethod was not …
625 java  tdd  mockito 

30
คุณจะทดสอบวิธีการส่วนตัวได้อย่างไร
ฉันกำลังสร้างห้องสมุดชั้นเรียนที่จะมีวิธีการของรัฐและเอกชน ฉันต้องการที่จะทดสอบหน่วยวิธีการส่วนตัว (ส่วนใหญ่ในขณะที่การพัฒนา แต่ยังเป็นประโยชน์สำหรับการปรับโครงสร้างในอนาคต) วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?

6
ตัวดัดแปลงการเข้าถึง C #“ ภายใน” เมื่อทำการทดสอบหน่วย
ฉันใหม่ในการทดสอบหน่วยและฉันพยายามหาว่าควรเริ่มใช้ตัวปรับการเข้าถึง 'ภายใน' ให้มากขึ้นหรือไม่ ฉันรู้ว่าถ้าเราใช้ 'ภายใน' และตั้งค่าแอสเซมบลีตัวแปร 'InternalsVisibleTo' เราสามารถทดสอบฟังก์ชันที่เราไม่ต้องการประกาศสาธารณะจากโครงการทดสอบ ทำให้ฉันคิดว่าฉันควรใช้ 'ภายใน' เสมอเพราะอย่างน้อยแต่ละโครงการ (ควร?) มีโครงการทดสอบของตัวเอง พวกคุณช่วยบอกเหตุผลได้ไหมว่าทำไมฉันถึงไม่ควรทำอย่างนี้? เมื่อใดที่ฉันควรใช้ 'ส่วนตัว'
469 c#  .net  unit-testing  tdd 

30
หน่วยทดสอบแคตตาล็อกรูปแบบการต่อต้าน
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ anti-pattern : ต้องมีองค์ประกอบสำคัญอย่างน้อยสองอย่างในปัจจุบันที่จะแยกแยะรูปแบบการต่อต้านที่แท้จริงจากนิสัยที่ไม่ดีแบบง่าย ๆ การฝึกฝนที่ไม่ดีหรือความคิดที่ไม่ดี: รูปแบบของการกระทำกระบวนการหรือโครงสร้างซ้ำ ๆ บางอย่างที่เริ่มปรากฏว่ามีประโยชน์ แต่ในท้ายที่สุดก่อให้เกิดผลกระทบที่เลวร้ายยิ่งกว่าผลลัพธ์ที่เป็นประโยชน์และ โซลูชันที่ได้รับการปรับโครงสร้างใหม่ซึ่งมีการบันทึกไว้อย่างชัดเจนได้รับการพิสูจน์ในการปฏิบัติจริงและสามารถทำซ้ำได้ โหวตให้กับรูปแบบการต่อต้าน TDD ที่คุณเคยเห็น "ในป่า" หนึ่งครั้งมากเกินไป โพสต์บล็อกโดยเจมส์คาร์และ การสนทนาที่เกี่ยวข้องกับการพัฒนาทดสอบกลุ่ม yahoogroup หากคุณพบหนึ่ง 'ไม่มีชื่อ' .. โพสต์ 'em เกินไป โพสต์ต่อการต่อต้านแบบหนึ่งโปรดให้คะแนนโหวตบางสิ่ง ความสนใจของฉันคือการหาเซตย่อยอันดับต้น ๆ เพื่อที่ฉันจะได้พูดคุยกับพวกเขาในกล่องอาหารกลางวันที่จะพบกันในอนาคตอันใกล้

30
ข้อเสียของการทดสอบพัฒนาขับเคลื่อน? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันจะสูญเสียอะไรบ้างโดยใช้การออกแบบขับเคลื่อนทดสอบ แสดงรายการเชิงลบเท่านั้น ไม่แสดงรายการผลประโยชน์ที่เขียนในรูปแบบเชิงลบ

7
วิธีเริ่มต้นใช้งาน TDD กับ Ruby on Rails [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันคุ้นเคยกับแนวคิด (เรียนการทดสอบในวิทยาลัย) แต่ฉันไม่แน่ใจว่าจะใช้งานได้อย่างไรเนื่องจากฉันไม่เคยทำงานในโครงการ TDD "ของจริง" ฉันกำลังจะเริ่มต้นพัฒนาโครงการโดยใช้ Ruby on Rails (ส่วนใหญ่ใช้ 2.3) แอปพลิเคชั่นนี้จะใช้ในการจัดการข้อมูลผู้ใช้และไฟล์บางไฟล์ ในตอนแรกมันจะไม่ซับซ้อนเกินไป แต่อาจขยายได้มากใน 6 เดือนข้างหน้าดังนั้นฉันรู้สึกว่านี่เป็นเวลาที่เหมาะสมที่จะได้รับ TDD มากขึ้น ฉันมีความคิดพื้นฐานเกี่ยวกับวิธีการทำ แต่ฉันยังต้องการตัวชี้และคำแนะนำ: ฉันควรอ่านบทความ Ruby on Rails TDD 101 อย่างไร ฉันต้องการทดสอบอะไร ฉันควรใช้อัญมณี / ปลั๊กอินใด ฉันควรใช้rspecหรือไม่ อื่น ๆ อีก? เมื่อฉันมีคลาสทดสอบทั้งหมดของฉันฉันจะไปและปรับใช้อย่างไร (เช่น: การรวมอย่างต่อเนื่อง) TDD ใช้เวลานานแค่ไหนจริงๆ? ฉันจำเป็นต้องอ่านหนังสือเกี่ยวกับเรื่องนี้หรือฉันสามารถรับทุกอย่างเพียงแค่เล่นกับมันและอ่านบทเรียนออนไลน์หรือไม่? ถ้าฉันต้องอ่านหนังสือเล่มไหน …

6
ทดสอบการอัพโหลดไฟล์โดยใช้ rspec - rails
ฉันต้องการทดสอบการอัปโหลดไฟล์ในราง แต่ไม่แน่ใจว่าจะทำอย่างไร นี่คือรหัสควบคุม: def uploadLicense #Create the license object @license = License.create(params[:license]) #Get Session ID sessid = session[:session_id] puts "\n\nSession_id:\n#{sessid}\n" #Generate a random string chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a newpass = "" 1.upto(5) { |i| newpass << chars[rand(chars.size-1)] } #Get the original file name upload=params[:upload] name = upload['datafile'].original_filename …

23
สามารถเพิ่มการทดสอบหน่วยในโครงการผลิตที่มีอยู่ได้สำเร็จหรือไม่? ถ้าเป็นเช่นนั้นจะเป็นอย่างไรและคุ้มค่าไหม?
ฉันกำลังพิจารณาอย่างมากว่าจะเพิ่มการทดสอบหน่วยในโครงการที่มีอยู่ที่กำลังดำเนินการอยู่ มันเริ่มต้นเมื่อ 18 เดือนที่แล้วก่อนที่ฉันจะได้เห็นประโยชน์ของ TDD (ฝ่ามือใบหน้า)ดังนั้นตอนนี้มันจึงเป็นโซลูชั่นที่ค่อนข้างใหญ่ในโครงการหลายโครงการ สิ่งที่ทำให้ผมคิดว่านี่คือการที่บางครั้งข้อผิดพลาดเก่าดูเหมือนว่าจะ Resurface หรือข้อผิดพลาดที่มีการตรวจสอบในขณะที่คงที่โดยไม่ต้องจริงๆถูกกำหนด การทดสอบหน่วยจะลดหรือป้องกันปัญหาเหล่านี้ที่เกิดขึ้น โดยการอ่านคำถามที่คล้ายกันดังนั้นฉันเห็นคำแนะนำเช่นเริ่มที่ตัวติดตามบั๊กและเขียนกรณีทดสอบสำหรับแต่ละข้อบกพร่องเพื่อป้องกันการถดถอย อย่างไรก็ตามฉันกังวลว่าฉันจะจบลงด้วยการขาดภาพรวมและจบการทดสอบพื้นฐานที่ขาดหายไปซึ่งจะรวมอยู่ด้วยหากฉันใช้ TDD จากการเดินทาง มีกระบวนการ / ขั้นตอนใดบ้างที่ควรปฏิบัติตามเพื่อให้แน่ใจว่าโซลูชันที่มีอยู่นั้นได้รับการทดสอบอย่างถูกต้องตามหน่วยงาน ฉันจะแน่ใจได้ว่าการทดสอบที่มีคุณภาพดีและไม่เพียง แต่กรณีของการทดสอบใด ๆ จะดีกว่าการทดสอบไม่มี ดังนั้นฉันเดาว่าสิ่งที่ฉันถามก็คือ มันคุ้มค่ากับความพยายามในการแก้ปัญหาที่มีอยู่ในการผลิตหรือไม่? จะดีกว่าหรือไม่ที่จะเพิกเฉยต่อการทดสอบสำหรับโครงการนี้และเพิ่มในการเขียนในอนาคตที่เป็นไปได้? สิ่งที่จะเป็นประโยชน์มากขึ้น ใช้เวลาสองสามสัปดาห์ในการเพิ่มการทดสอบหรือไม่กี่สัปดาห์ที่จะเพิ่มฟังก์ชั่น? (เห็นได้ชัดว่าคำตอบของประเด็นที่สามนั้นขึ้นอยู่กับว่าคุณกำลังพูดคุยกับผู้บริหารหรือนักพัฒนา) เหตุผลในการรับรางวัล การเพิ่มเงินรางวัลเพื่อพยายามและดึงดูดคำตอบที่กว้างขึ้นซึ่งไม่เพียง แต่ยืนยันความสงสัยที่มีอยู่ของฉันว่ามันเป็นเรื่องดีที่ต้องทำ แต่ยังมีเหตุผลที่ดีบางประการ ฉันตั้งเป้าหมายที่จะเขียนคำถามนี้ในภายหลังด้วยข้อดีข้อเสียเพื่อลองและแสดงให้ผู้บริหารเห็นว่ามันคุ้มค่ากับการใช้เวลาทำงานในการขับเคลื่อนการพัฒนาในอนาคตของผลิตภัณฑ์ไปยัง TDD ฉันต้องการที่จะเข้าใกล้ความท้าทายนี้และพัฒนาเหตุผลของฉันโดยไม่มีมุมมองที่ลำเอียงของตัวเอง

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

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

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

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

30
คุณรู้ได้อย่างไรว่าต้องทดสอบอะไรเมื่อเขียนแบบทดสอบหน่วย? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่? อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ การใช้ C # ฉันต้องการคลาสUserที่มีชื่อผู้ใช้รหัสผ่านแฟล็กที่ใช้งานชื่อนามสกุลชื่อเต็ม ฯลฯ ควรมีวิธีการพิสูจน์ตัวตนและบันทึกผู้ใช้ ฉันเพิ่งเขียนแบบทดสอบสำหรับวิธีการนี้หรือไม่? และฉันต้องกังวลเกี่ยวกับการทดสอบคุณสมบัติหรือไม่เนื่องจากเป็น. Net's getter and setters?
127 c#  unit-testing  tdd 

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