ในขณะที่เขียนคำตอบนี้ NUnit เวอร์ชันล่าสุดคือ v3.5 และ xUnit.net คือ v2.1
ทั้งสองเฟรมเวิร์กนั้นยอดเยี่ยมและทั้งคู่รองรับการทดสอบแบบขนาน (ในทางที่แตกต่างกัน) NUnitมีมาตั้งแต่ปี 2545 มีการใช้กันอย่างแพร่หลายมีการจัดทำเอกสารอย่างดีและมีชุมชนขนาดใหญ่ในขณะที่xUnit.netมีความทันสมัยมากขึ้นมีการยึดติดกับ TDD มากขึ้นสามารถขยายได้มากขึ้นและมีแนวโน้มในการพัฒนา. NET Core นอกจากนี้ยังมีการบันทึกไว้เป็นอย่างดี
นอกจากนั้นความแตกต่างหลักที่ฉันสังเกตเห็นคือวิธีที่ xUnit.net เรียกใช้วิธีการทดสอบ ดังนั้นในNUnitเราจึงมีคลาสทดสอบและชุดวิธีการทดสอบอยู่ในนั้น NUnit สร้างอินสแตนซ์ใหม่ของคลาสทดสอบจากนั้นรันวิธีการทดสอบทั้งหมดจากอินสแตนซ์เดียวกัน ในขณะที่xUnit.net สร้างอินสแตนซ์ใหม่ของคลาสทดสอบสำหรับวิธีการทดสอบแต่ละวิธี . ดังนั้นเราไม่สามารถใช้ฟิลด์หรือคุณสมบัติเพื่อแบ่งปันข้อมูลระหว่างวิธีการทดสอบซึ่งเป็นการปฏิบัติที่ไม่ดีเนื่องจากวิธีการทดสอบของเราจะขึ้นอยู่กันซึ่งไม่สามารถยอมรับได้ใน TDD ดังนั้นหากคุณใช้ xunit.net คุณสามารถมั่นใจได้ว่าวิธีการทดสอบของคุณแยกออกจากกันโดยสิ้นเชิง
หากคุณยินดีที่จะแบ่งปันข้อมูลระหว่างวิธีการทดสอบของคุณ xUnit จะให้คุณทำเช่นนั้น ดังนั้นโดยค่าเริ่มต้นวิธีการทดสอบทั้งหมดจะถูกแยกออกโดยสิ้นเชิง แต่คุณสามารถแยกการแยกนี้ได้ในบางกรณีโดยเจตนา ฉันชอบทัศนคติแบบนี้นั่นคือเหตุผลที่ฉันชอบมันมากกว่า