กรอบการทดสอบหน่วยที่ดีที่สุดสำหรับ. NET คืออะไรและเพราะเหตุใด [ปิด]


26

สำหรับฉันดูเหมือนว่าทุกคนใช้NUnitโดยไม่คำนึงถึงตัวเลือกอื่น ๆ ฉันคิดว่าเป็นเพราะ:

  • ทุกคนคุ้นเคยกับมันอยู่แล้วดังนั้นพวกเขาจึงไม่ต้องเรียนรู้ API ใหม่
  • ถูกตั้งค่าไว้แล้วด้วยเซิร์ฟเวอร์การรวมต่อเนื่องเพื่อทำงานกับ NUnit

ฉันผิดเกี่ยวกับเรื่องนี้หรือไม่?

ฉันตัดสินใจใช้xUnitกับหนึ่งในโปรเจคของฉันเมื่อเร็ว ๆ นี้และฉันก็ชอบ มันทำให้ฉันมีความรู้สึกมากขึ้นและแนวคิดดูเหมือนจะเป็นก้าวที่ชัดเจนจาก NUnit

ฉันต้องการรับฟังความคิดเห็นเกี่ยวกับกรอบงานที่ดีที่สุดจริง ๆ โดยไม่คำนึงถึงการเรียนรู้หรือกำหนดค่าการทดสอบอัตโนมัติของคุณใหม่


6
กรุณากำหนดที่ดีที่สุด ราคาถูก? รหัสง่ายที่สุด? บรรทัดที่น้อยที่สุดของรหัสต่อการทดสอบ? stackoverflow.com/questions/680298/…
Amir Rezaei

ขออภัยฉันหมายถึงมีประสิทธิภาพมากที่สุดมั่นคงและใช้งานง่ายอะไรก็ตาม ฉันขอความคิดเห็นและเหตุผลว่าทำไม ฉันทิ้งจินตนาการที่ดีที่สุดให้กับผู้ตอบเพราะฉันต้องการเห็นว่าแง่มุมใดที่สำคัญต่อผู้คน
ไม่มีใคร

2
หากคุณสามารถป้อนข้อความคำถามของคุณได้อาจเป็นไปได้ว่าไม่เช่นนั้นเป็นเพียงคำถาม "รายชื่อ X" ที่ไม่สร้างสรรค์ ดูหกแนวทางสำหรับคำถามเชิงอัตนัย
ChrisF

2
"ดีที่สุด" เป็นสิ่งที่โง่ที่จะถาม - เพราะมันไม่ค่อยดีที่สุดเพียงอย่างเดียวเพราะมันจะขึ้นอยู่กับบริบทและอีกส่วนหนึ่งเพราะมันหลีกเลี่ยงไม่ได้ที่จะมีวิสัยทัศน์ในระดับหนึ่ง
Murph

10
Murph ก่อนอื่นไซต์นี้มีไว้สำหรับคำถามส่วนตัว สองฉันขอความคิดเห็นดังนั้นฉันต้องการเห็น 'การตีความ' ดีที่สุด 'ของผู้อื่น และอย่าเรียกฉันว่าเป็นคนโง่
ไม่มีใคร

คำตอบ:


15

MSTest

ฉันใช้ MSTest เป็นการส่วนตัว NUnit นั้นดีมาก แต่ใน VS2010 MSTest ได้รวมเข้ากับ IDE แล้วและมีเทมเพลตโครงการแบบเต็มสำหรับมัน สำหรับ. NET ถ้าคุณใช้ 2010 ฉันคิดว่า MSTest เป็นหนทางที่จะไป (MSTest ใน VS2008 ฉันไม่คิดว่ามันจะเกินมาตรฐาน) สำหรับการครอบคลุมโค้ดนักวิ่งทดสอบและเครื่องมืออื่น ๆ ที่มีให้คุณ ออกจากกล่อง. (ถ้าคุณใช้ CodeRush หรือ R # พวกเขามีเครื่องมือทดสอบ / เครื่องมือสำหรับการทดสอบอื่น ๆ )

แก้ไข: ตั้งแต่ฉันย้ายไปที่ XUnit : D


ฉันโหวตให้ทั้ง MbUnit / Galio และคำตอบนี้ MbUnit / Galio นั้นดีกว่า แต่มือของพวกเขาจะถูกผูกไว้เมื่อมันมาถึงการเรียกใช้การทดสอบ MsTest สำหรับชั้นเรียนที่สำคัญในห้องสมุด. Net นั้นถือเป็นที่สิ้นสุดและไม่สามารถขยายได้ อย่างไรก็ตามถ้าคุณต้องทำ GUI อัตโนมัติแล้ว Coded UI และcuite.codeplex.com/documentation จะทำงานบน MsTest ดังนั้นเพียงแค่มี HAS ที่จะใช้พวกเขา
งาน

2
ปัญหาที่ฉันมีกับ MSTest คือมันไม่สนับสนุนการทดสอบบรรทัดคำสั่งซึ่งอาจเป็นปัญหาเมื่อคุณต้องการเรียกใช้หน่วยผ่าน CI
CmdrTallen

1
Nunit ตอนนี้สามารถผสานรวมเข้ากับ VS ได้ไหม?
BKSpurgeon

ใช่มันเป็น เมื่อพิจารณาตอนนี้อายุประมาณ 6 ปีตอนนี้ฉันย้ายไปที่ NUnit เป็นการส่วนตัวแล้วตอนนี้ไปที่ XUnit ทั้ง (และอื่น ๆ ) มีแพ็กเกจ nuget ที่ทำหน้าที่เป็นอะแดปเตอร์เพื่อเพิ่มความสามารถในการทำงาน VS เดียวกันกับ MSTest ความจริงแล้ว MSTest น่าจะอยู่ที่ด้านล่างของรายการ ณ จุดนี้ ฉันจะลงคะแนน XUnit หรือ NUnit วันนี้เป็นทั้งแข็งรักษาและทันสมัย
Ryan Hayes

14

ฉันเริ่มใช้Gallio / MbUnitหลายปีที่ผ่านมา และคุณสมบัติและอัญมณีที่มีให้นั้นมีประสิทธิภาพมากจนฉันไม่เคยเสียใจที่เลือกไว้ อันที่จริงตอนนี้ฉันเป็นส่วนหนึ่งของทีมพัฒนาโครงการ Gallio OSS แล้ว ดังนั้นฉันสามารถมีส่วนร่วมเพื่อทำให้มันยอดเยี่ยมยิ่งขึ้น

  • MbUnitมีคุณสมบัติที่ทรงพลังมากมายที่ทำให้ชีวิตนักพัฒนาซอฟต์แวร์ของฉันง่ายขึ้น (การตรวจสอบสัญญาโรงงานทดสอบการเปรียบเทียบความเท่าเทียมกันทางโครงสร้างการทดสอบเชิง Combinatorial กรอบการสร้างข้อมูลการกระจายข้อความการยืนยัน XML จุดขยาย ฯลฯ )
  • Gallioมีแพลตฟอร์มที่สอดคล้องกันเพื่อเรียกใช้การทดสอบทั้งหมดของฉันด้วยเครื่องมือการรายงานที่ดี ฉันยังชื่นชอบความจริงที่ว่าฉันสามารถรวมการทดสอบจากโครงการอื่น ๆ ของ OSS ซึ่งไม่ได้ใช้ MbUnit และเพียงแค่รันมัน การรวมอย่างต่อเนื่องภายในเครื่องมือของบุคคลที่สามหลายแห่งยังสะดวก (R #, PoSh, dotCover และอื่น ๆ ) และความสามารถในการขยายโครงสร้างพื้นฐานนั้นน่าทึ่งมาก (ตัวอย่างเช่นฉันเพิ่งเสร็จสิ้นการเขียนอะแดปเตอร์ทดสอบสำหรับกรอบการทดสอบ มันจะเป็นส่วนหนึ่งของการเปิดตัวในอนาคตเร็ว ๆ นี้)

วิกิพีเดียเป็นที่แน่นอนดีจุดเริ่มต้นที่จะค้นพบกัลลิโอและ MbUnit v3 มันคิดถึงบางบท แต่มันก็เงียบดีมีประโยชน์อยู่แล้ว


ตัวเปรียบเทียบความเท่าเทียมกันทางโครงสร้างและกรอบการสร้างข้อมูลนั้นยอดเยี่ยมมาก MbUnit สามารถทำการทดสอบด้วยข้อมูลได้หรือไม่เช่นอ่านไฟล์ csv / xsd และใช้เป็นข้อโต้แย้งวิธีทดสอบได้หรือไม่ นั่นเป็นหนึ่งในแหล่งท่องเที่ยวหลักของ xunit สำหรับฉัน
ไม่มีใคร

แน่ใจ ASAIK MbUnit เป็นกรอบการทดสอบครั้งแรกสำหรับ. NET เพื่อแนะนำการทดสอบที่ขับเคลื่อนด้วยข้อมูล มันสามารถผูก paremeters ทดสอบกับแหล่งข้อมูลภายใน ([แถว], [คอลัมน์], ฯลฯ ) และภายนอก ([CsvData], [XmlData], ฯลฯ ) แหล่งข้อมูล รายละเอียดเพิ่มเติมได้ที่นี่: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin

พวกเขาแก้ไขปัญหาด้านประสิทธิภาพที่พวกเขามีกับ Gallio และ visual studio หรือไม่ เป็นนักฆ่าข้อตกลงสำหรับเรา
ไวแอตต์บาร์เน็ตต์

ฉันใช้ MbUnit เมื่อฉันทำงานกับ บริษัท ขนาดเล็กและมันยอดเยี่ยมมาก! หลังจากนั้นฉันก็ใช้ MsTest เพราะฉันต้องทำแล้วก็ใช้งานได้ดี ฉันยังคงต้องการเขียนโค้ดที่ชัดเจนกว่าการกำหนดการตั้งค่าโครงการ การสำรองข้อมูลองค์กรช่วย MSTest แม้ว่า ไม่ว่าการออกแบบจะน่าเกลียดหรือสวยงามคุณรู้ว่าอะไรก็ตามที่ออกมาจาก MSFT จะได้รับการทดสอบอย่างดี
งาน

@YannTrevin สถานะของ Gallio / MbUnit คืออะไร ฉันดูที่เก็บรหัสของ Google และดูเหมือนว่าจะไม่มีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้ มีการพัฒนาเกิดขึ้นที่อื่นหรือโครงการหยุดชะงักหรือไม่
Wesley Wiser

9

การเลือกหนึ่งรายการและใช้งานอาจเป็นขั้นตอนที่สำคัญที่สุดที่นี่

โดยส่วนตัวฉันจะเลือกNUnitด้วยเหตุผลสองสามข้อ ก่อนอื่นคือการสนับสนุนเครื่องมือ มีadd-in ฟรีสำหรับ Visual Studio 2010และปลั๊กอินของบุคคลที่สามที่สำคัญทั้งหมดสนับสนุน ทุกระบบบิลด์เดียวยูทิลิตี้ครอบคลุมการทดสอบและเซิร์ฟเวอร์ CI รองรับ ในหลายกรณีไม่มีปลั๊กอิน ในระดับรหัสมันสามารถจัดการกับสถานการณ์ใด ๆ ณ จุดนี้ - การทดสอบที่ขับเคลื่อนด้วยข้อมูล, การสืบทอด, คลาสการทดสอบที่เป็นนามธรรม, คลาสการทดสอบทั่วไป, การติดตั้ง, การฉีกขาด ฯลฯ ในบางกรณีเรามีxUnitเพราะ NUnit มีคุณลักษณะที่หลากหลายเกินไป และมีประสิทธิภาพ

นอกเหนือจาก NUnit ฉันคิดว่าคุณสามารถโต้แย้งได้ดีสำหรับ MBUnit + Gallio ตามที่ Yann พูดถึง - มันเป็นกรอบที่แข็งแกร่งมาก สิ่งที่คุณควรหลีกเลี่ยงหากเป็นไปได้ทั้งหมดคือ MSTest ซึ่งมีข้อบกพร่องร้ายแรงถึง IMHO ข้อบกพร่องเป็นข้อ จำกัด บางประการในชั้นเรียนทดสอบของคุณเช่นไม่มีการสืบทอดและการพึ่งพา SKU ของสตูดิโอภาพมืออาชีพหรือดีกว่า รวมถึงต้องมี visual studio ติดตั้งบน build server เพื่อทำการทดสอบ


0

เหตุผลหนึ่งคือ NUNIT กลายเป็นมาตรฐานอุตสาหกรรมมากกว่า xUnit แต่โดยส่วนตัวฉันรัก xunit

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