NUnit สำหรับ C # เปรียบเทียบกับเครื่องมือทดสอบหน่วยที่รวมเข้ากับ Visual Studio อย่างไร


12

ฉันต้องทำงานเป็นทีมเพื่อพัฒนาแอปพลิเคชั่นเดสก์ท็อประดับกลางที่พัฒนาโดยใช้ C # .NET ก่อนหน้านี้ฉันยังไม่ได้ใช้การทดสอบหน่วยและการพัฒนาขับเคลื่อนทดสอบ ฉันทราบว่ามีเครื่องมือและกรอบงานมากมายสำหรับแอปพลิเคชันการทดสอบหน่วย C # ณ ตอนนี้ฉันได้รับทราบถึง Nunit และเครื่องมือทดสอบหน่วยที่รวมเข้ากับ Visual Studio

ฉันอยากรู้ว่าทั้งสองเปรียบเทียบกันอย่างไร

คำตอบ:


14

มีการทับซ้อนกันระหว่างสองอย่างแน่นอน NUnit เป็นผู้บุกเบิกและเป็นผลให้มีความเป็นผู้ใหญ่มากกว่า กรอบการทดสอบหน่วย C # อายุน้อยกว่า แต่รวมเข้ากับ Visual Studio

ฉันมาจากโลก Java ที่ JUnit เป็นราชา (มีคนอื่น แต่ไม่มีใครโด่งดัง) และ NUnit 2.5.x นั้นเข้ากันได้ดีกับการทำงานของ JUnit 4 ในความเป็นจริงมันทำงานได้ดีกว่าจาวา

เท่าที่คำจำกัดความการทดสอบเกี่ยวข้องฉันชอบ NUnit แน่ใจว่าการทดสอบ MS มีคุณสมบัติที่คล้ายกัน (แต่แตกต่างกัน) ที่คุณใช้กับคลาสของคุณ แต่ฉันเชื่อว่ามันขาดคุณสมบัติบางอย่างที่สามารถช่วยคุณทำงานในการทดสอบบางประเภทได้ คุณอาจต้องการที่จะตรวจสอบการอภิปรายที่คล้ายกันใน StackOverflow

ฉันชอบโมเดลการยืนยันใหม่ที่สร้างขึ้นใน NUnit (ใช้การยืนยันแบบHamcrest ) เพราะพวกเขาอ่านง่ายและยืดได้ง่าย

  • NUnit จะมีการสนับสนุนจากบุคคลที่สามที่ดีกว่า MS Test จะมีการรวมที่ดีขึ้น (นอกกรอบ)
  • NUnit จะมีความยืดหยุ่นและความสามารถในการขยายที่ดีขึ้น MS Test จะประสบปัญหาในด้านนี้
  • ทั้งทดสอบหน่วยทดสอบและตรวจสอบผลลัพธ์ของคุณทั้งคู่จะใช้งานได้กับ TDD

3

ความแตกต่างที่แท้จริงเพียงอย่างเดียวที่ฉันสังเกตเห็นเมื่อฉันต้องสร้างบิลด์สคริปต์เพื่อทำงานบนเซิร์ฟเวอร์ MSBUILD โดยเฉพาะในรูปแบบ TFS การตั้งค่า nUnit และรับผลการทดสอบ nUnit เป็นความเจ็บปวดที่แท้จริงการติดตั้งและรับผลลัพธ์สำหรับ MSTest

นอกจากนี้ยังมีปัญหากับ Resharper ที่การทดสอบ MSTest ไม่สามารถเรียกใช้จากผู้ทดสอบ ในรุ่นที่ใหม่กว่านี้ได้รับการแก้ไขแล้วดังนั้นหากคุณมี Resharper เวอร์ชันเก่ามันก็อาจจะมีปัญหา

โพสต์นี้จาก Roy Oshereve ยังคงเป็นภาพรวมที่ดี

ป.ล. : ลบคำตอบอื่น ๆ ของฉันไม่เป็นประโยชน์เลยขอโทษสำหรับคำตอบนั้น


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