โครงการทดสอบ NUnit กับ Visual Studio 2008 สำหรับการทดสอบหน่วย? [ปิด]


254

ฉันจะเริ่มโครงการใหม่ในที่ทำงานและต้องการเข้าทดสอบหน่วย เราจะใช้ VS 2008, C # และ ASP.NET MVC ฉันกำลังมองหาการใช้ NUnit หรือโครงการทดสอบในตัวที่ VS2008 มี แต่ฉันเปิดให้ทำการค้นคว้าคำแนะนำอื่น ๆ ระบบหนึ่งดีกว่าระบบอื่นหรืออาจจะใช้ / เข้าใจง่ายกว่าระบบอื่นหรือไม่? ฉันกำลังมองหาการตั้งค่าโครงการนี้เป็น "แนวปฏิบัติที่ดีที่สุด" สำหรับความพยายามในการพัฒนาของเราในอนาคต

ขอบคุณสำหรับความช่วยเหลือและคำแนะนำใด ๆ !!

คำตอบ:


99

Daokตั้งชื่อโปรของโครงการทดสอบ VS2008 ทั้งหมดนี่คือโปรของ NUnit

  • NUnit มีกรอบการเยาะเย้ย
  • NUnit สามารถเรียกใช้ภายนอก IDE ซึ่งมีประโยชน์ถ้าคุณต้องการเรียกใช้การทดสอบบนเซิร์ฟเวอร์ที่ไม่ใช่ MS build เช่น CC.Net
  • NUnit มีเวอร์ชั่นออกมามากกว่า visual studio คุณไม่ต้องรอเป็นปีสำหรับรุ่นใหม่และคุณไม่จำเป็นต้องติดตั้ง IDE เวอร์ชันใหม่เพื่อรับคุณสมบัติใหม่
  • มีการพัฒนาส่วนขยายสำหรับ NUnit เช่นการทดสอบแถวเป็นต้น
  • การทดสอบ Visual Studio ใช้เวลานานในการเริ่มต้นด้วยเหตุผลบางอย่าง นี้จะดีกว่าในปี 2008 แต่ก็ยังช้าเกินไปสำหรับรสนิยมของฉัน เรียกใช้การทดสอบอย่างรวดเร็วเพื่อดูว่าคุณไม่ได้หักอะไรบางอย่างอาจใช้เวลานานเกินไป NUnit กับ Testdriven.Net เพื่อทำการทดสอบจาก IDE นั้นเร็วกว่ามาก โดยเฉพาะอย่างยิ่งเมื่อทำการทดสอบเดี่ยว
    การติดต่อกับ Kjetil Klaussen เกิดจากการทดสอบ Visual Studio โดยใช้การทดสอบ MSTest ใน TestDriven.Net ทำให้ MSTest มีประสิทธิภาพเทียบเท่ากับ NUnit

19
คุณไม่สามารถใช้ mstest.exe เพื่อรันการทดสอบ MSTest นอก IDE ได้หรือไม่
Phillip Wells

13
นูนิทที่มีกรอบการเยาะเย้ยไม่ได้เปรียบมาก ฉันใช้โครงการทดสอบหน่วย VS 2008 กับเฟรมเวิร์ก Moq ซึ่งใช้วิธีแปลกใหม่ใช้ประโยชน์จากต้นไม้นิพจน์ LINQ: code.google.com/p/moq
DSO

5
ข้อดีอีกอย่างหนึ่งสำหรับ Nunit สำหรับฉันอยู่ดีคือ Resharper มี UI ที่ดีมากล้อมรอบมันซึ่งเร็วกว่าคอมโพเนนต์การทดสอบ VS มันยังเชื่อมโยงหลายมิติติดตามสแต็คของการทดสอบที่ล้มเหลวในรหัสของคุณ
เจฟฟ์ Putz

7
การทดสอบหน่วยรวมอยู่ในเวอร์ชันมืออาชีพของ VS 2008
user179700

3
@Jeff Putz: Resharper สามารถเรียกใช้การทดสอบหน่วย Visual Studio ด้วยเช่นกันแม้จะอยู่นอกโครงการทดสอบ
Paul Ruane

64

กรอบการทดสอบหน่วยนั้นไม่สำคัญมากนักเพราะคุณสามารถแปลงคลาสการทดสอบด้วยไฟล์โครงการแยกต่างหากและการคอมไพล์แบบมีเงื่อนไข (เช่นนี้ VS-> NUnit):

 #if! NUNIT
  ใช้ Microsoft.VisualStudio.TestTools.UnitTesting;
 #อื่น
  ใช้ NUnit.Framework;
  ใช้ TestClass = NUnit.Framework.TestFixtureAttribute;
  ใช้ TestMethod = NUnit.Framework.TestAttribute;
  ใช้ TestInitialize = NUnit.Framework.SetUpAttribute;
  using TestCleanup = NUnit.Framework.TearDownAttribute;
  ใช้ TestContext = System.String;
  using DeploymentItem = NUnit.Framework.DescriptionAttribute;
 endif #

ปลั๊กอิน TestDriven.Net นั้นดีและไม่แพงมาก ... ด้วย VS2008 ธรรมดาเท่านั้นคุณต้องหาการทดสอบจากคลาสทดสอบหรือรายการทดสอบของคุณ ด้วย TestDriven.Net คุณสามารถรันการทดสอบโดยตรงจากชั้นเรียนที่คุณกำลังทดสอบ ท้ายที่สุดการทดสอบหน่วยควรบำรุงรักษาง่ายและใกล้กับผู้พัฒนา


12
ฉันลงคะแนนหนึ่งนี้เนื่องจาก NUnit มีไวยากรณ์ที่สมบูรณ์ยิ่งขึ้นกว่า MSTest ซึ่งหมายความว่าคุณสามารถไปจาก MSTest -> NUnit แต่ไม่ใช่ในทางกลับกันเว้นแต่คุณจะระมัดระวังมาก ประวัติแสดงให้เห็นว่าเราอย่างน้อยหนึ่งคนไม่ได้
โทมัส Eyde

2
ฉันเห็นด้วยกับโทมัส สิ่งนี้จะใช้ได้ถ้าคุณกำลังใช้ข้อความยืนยันขั้นพื้นฐานที่สุด แต่โมเดลข้อ จำกัด ของ NUnit นั้นทรงพลังและมีเหตุผลมากพอที่จะเลือก NUnit ผ่าน MSTest
ทำเครื่องหมาย

ฉันเชื่อว่าวิธีนี้ใช้โดยรูปแบบ ms และกลุ่มการปฏิบัติในการทดสอบ EntLib
robi-y

1
@Dan Neely หากคุณกำลังทดสอบเอกชนที่คุณทำผิด :(
JDPeckham

2
@JDPeckham ฉันไม่ได้บอกว่าสิ่งที่ควรทำ / ไม่ควรทำด้วยเครื่องมือนั้นไม่สำคัญ แต่ในตอนท้ายของการทำงานให้สำเร็จเป็นสิ่งที่สำคัญที่สุด ถ้านั่นหมายถึงการตอกตะปูที่ด้านหลังของขวานเพราะผู้ขายเครื่องมือไม่ขายค้อนจากนั้นผู้ผลิตขวานจะต้องอยู่กับการถูกทำลาย
Dan Is Fiddling โดย Firelight

34

ประโยชน์ / การเปลี่ยนแปลงของ VS2008 ชุดทดสอบหน่วยภายใน

  1. รุ่น 2008 มีให้บริการในรุ่นมืออาชีพ (ก่อนที่จะต้องใช้เวอร์ชันแพงของ VS นี่เป็นเพียงการทดสอบหน่วยนักพัฒนาเท่านั้น) ซึ่งทำให้นักพัฒนาจำนวนมากมีตัวเลือกเพียงตัวเลือกเดียวสำหรับกรอบการทดสอบแบบเปิด / ภายนอก
  2. API ในตัวรองรับโดย บริษัท เดียว
  3. ใช้เครื่องมือเดียวกันเพื่อเรียกใช้และสร้างการทดสอบ (คุณสามารถเรียกใช้โดยใช้บรรทัดคำสั่งและ MSTest ด้วย)
  4. การออกแบบที่เรียบง่าย (ไม่มีกรอบการทำงานเยาะเย้ย แต่นี่เป็นจุดเริ่มต้นที่ดีสำหรับโปรแกรมเมอร์หลาย ๆ คน)
  5. ได้รับการสนับสนุนระยะยาว (ฉันยังจำได้ว่าเกิดอะไรขึ้นกับ nDoc ฉันไม่ต้องการผูกพันกับกรอบการทดสอบที่อาจไม่รองรับใน 5 ปี แต่ฉันยังถือว่า nUnit เป็นกรอบที่ยอดเยี่ยม)
  6. หากใช้เซิร์ฟเวอร์มูลฐานของทีมเป็นแบ็กเอนด์ของคุณคุณสามารถสร้างไอเท็มงานหรือข้อบกพร่องด้วยข้อมูลการทดสอบที่ล้มเหลวอย่างง่าย

4
ฉันคิดว่ามันยังคงบอกเล่าเกี่ยวกับมุมมองของ Microsoft ในการทดสอบว่าไม่ใช่รุ่น Standard เพียง Professional และสูงกว่า
J Wynia

เห็นด้วยฉันชอบที่จะเห็นมันในแบบมาตรฐานขึ้นไป ในรุ่นด่วนมันจะ overkill สำหรับมือใหม่
Simara

1
@JJ Wynia: การอ่านการตัดสินใจของพวกเขาที่จะรวมเฉพาะในระดับมืออาชีพและเหนือกว่าเมื่อพูดอะไรบางอย่างเกี่ยวกับมุมมองของพวกเขาในการทดสอบคือการอ่านมากเกินไป อาจเป็นการตัดสินใจทางธุรกิจมากกว่าที่จะเป็นการตัดสินใจเชิงปรัชญา
jason

@Simara การทดสอบ shoud มีอยู่ในวงจรการพัฒนา มันจะให้ในฉบับด่วน
eastender

33

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


44
คุณไม่ควรแตะต้องส่วนตัว ทั้งหมดล้อเล่นกันโรงเรียนแห่งหนึ่งของความคิดคือสิ่งที่คุณต้องการทดสอบคือวิธีการสาธารณะ การเรียกวิธีการสาธารณะทั้งหมดของคุณควรเรียกวิธีการส่วนตัวทั้งหมดของคุณ หากวิธีส่วนตัวไม่ได้ถูกเรียกผ่านทางสาธารณะวิธีส่วนตัวนั้นซ้ำซ้อน
Lieven Keersmaekers

7
@Lieven: หากคุณกำลังทดสอบเอกชนแม้ว่าคุณจะทำการทดสอบแบบบูรณาการจริงๆไม่ใช่การทดสอบหน่วย (แน่นอนผมไม่ได้เป็นคนคลั่ง TDD และผมก็อาจจะเพียงการทดสอบสาธารณชน ... แต่ฉันรู้สึกเหมือนช่วยในการเริ่มต้นการต่อสู้)
แมทธิว Whited

11
@Matthew การทดสอบการรวมกำลังทดสอบสองหน่วยขึ้นไปด้วยกัน การทดสอบวิธีการส่วนตัวเป็นเพียงการละเมิด (ใหญ่) ของการห่อหุ้มและอาจนำไปสู่การทดสอบหน่วยที่เปราะบางที่จะต้องมีการแก้ไขทุกครั้งที่มีการเปลี่ยนแปลงการใช้งาน
Omer Rauchwerger

3
คุณยังสามารถใช้ [ชุดประกอบ: InternalsVisibleTo (... )] พร้อมกับคอมไพเลอร์คำสั่งเพื่อนำออกเมื่อคุณสร้าง RTM
Iain Galloway

1
ฉันแตะที่เอกชนของฉันตลอดเวลา :) ฉันคิดว่ามีค่าในการทดสอบเฉพาะสมาชิกส่วนตัวเพื่อหลีกเลี่ยงค่าใช้จ่ายจากการทดสอบผู้โทรที่ต้องใช้การตั้งค่าที่ซับซ้อนมาก
Crackerjack

14

สิ่งหนึ่งที่น่ารำคาญเล็กน้อยสำหรับกรอบการทดสอบของ Visual Studio คือมันจะสร้างไฟล์ทดสอบที่เรียกใช้จำนวนมากซึ่งมีแนวโน้มว่าจะทำให้ไดเรกทอรีโครงการของคุณยุ่งเหยิงแม้ว่านี่จะไม่ใช่เรื่องใหญ่อะไร

นอกจากนี้หากคุณไม่มีปลั๊กอินเช่น TestDriven.NET คุณไม่สามารถดีบักการทดสอบหน่วย NUnit ของคุณ (หรือ MbUnit, xUnit ฯลฯ ) ภายในสภาพแวดล้อม Visual Studio อย่างที่คุณทำได้ด้วยกรอบการทดสอบ Microsoft VS ซึ่งสร้างขึ้นมา


3
คุณสามารถดีบักการทดสอบ NUnit ภายใน Visual Studio 2005
Jason Short

นอกจากนี้คุณยังสามารถแก้ปัญหา xUnit แต่มันไม่ใช่ที่เห็นได้ชัดวิธีการตั้งค่าที่ขึ้น (หน้าคุณสมบัติ)
annakata

1
คุณสามารถดีบัก NUnit ได้อย่างง่ายดายโดยการแนบดีบักเกอร์กับกระบวนการ NUnit ที่กำลังทำงานเช่น grimus กล่าว ไม่มีข้อเสียจริงที่นี่
Anne Schuessler

1: จำนวนการทดสอบที่กำหนดค่าได้ในการตั้งค่า VS - ฉันตั้งค่าเป็นหนึ่ง 2: เห็นด้วยกับความคิดเห็นข้างต้น - เป็นไปได้ แต่น่าอึดอัดใจ 3: โดยรวมฉันชอบสภาพแวดล้อมการทดสอบ VS ในตัว
RaoulRubin

14

ปิดหัวข้อเล็กน้อย แต่ถ้าคุณไปกับ NUnit ฉันสามารถแนะนำให้ใช้ReSharper - มันเพิ่มปุ่มบางปุ่มลงใน VS UI ที่ทำให้การเรียกใช้และการทดสอบการดีบักจาก IDE ทำได้ง่ายขึ้นมาก

รีวิวนี้ล้าสมัยเล็กน้อย แต่จะอธิบายในรายละเอียดเพิ่มเติม:

http://codebetter.com/blogs/paul.laudeman/archive/2006/08/15/Using-ReSharper-as-an-essential-part-of-your-TDD-toolkit.aspx


ด้วยปลั๊กอิน Gallio ถึง R # คุณสามารถเรียกใช้ MSTest ได้เช่นกัน
Kjetil Klaussen

CodeRush วางไอคอนไว้บนการทดสอบในโค้ดเพื่อให้คุณสามารถรันหนึ่งการทดสอบหรือการทดสอบทั้งหมดในคลาสหรือในเนมสเปซ ดูที่นี่: community.devexpress.com/blogs/markmiller/archive/2009/11/16/…
Ryan Lundy

Resharper จะทำการทดสอบ MSTest ด้วย
JDPeckham


11

เนื้อหลักของฉันกับการทดสอบหน่วย VS เหนือ NUnit คือการสร้างการทดสอบ VS มีแนวโน้มที่จะฉีดรหัสที่สร้างขึ้นสำหรับการเข้าถึงสมาชิกส่วนตัว

บางคนอาจต้องการทดสอบวิธีการส่วนตัวของพวกเขาบางคนอาจไม่ได้นั่นคือหัวข้อที่แตกต่างกัน

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


11

ฉันได้ทำ TDD บางอย่างโดยใช้ทั้งสองอย่าง (บางทีฉันอาจจะโง่เล็กน้อย) nUnit ดูเหมือนจะเร็วและง่ายกว่าสำหรับฉันมาก และเมื่อฉันพูดมากฉันหมายถึงมาก

ในการทดสอบ MS มีคุณสมบัติมากเกินไปทุกที่ - รหัสที่ทำการทดสอบจริงคือเส้นเล็ก ๆ ที่คุณอาจอ่านที่นี่และที่นั่น ความยุ่งเหยิงครั้งใหญ่ ใน nUnit รหัสที่ทำการทดสอบจะควบคุมคุณลักษณะดังที่ควรทำ

นอกจากนี้ใน nUnit คุณต้องคลิกที่การทดสอบที่คุณต้องการเรียกใช้ (การทดสอบทั้งหมดเดียวครอบคลุมการเรียนการประชุมหรือการแก้ปัญหา?) เพียงคลิกเดียว และหน้าต่างนั้นใสและใหญ่ คุณได้รับแสงสีเขียวและสีแดงที่ชัดเจน คุณรู้ว่าสิ่งที่เกิดขึ้นในสายตาเดียว

ใน VSTS รายการทดสอบนั้นติดอยู่ที่ด้านล่างของหน้าจอมันเล็กและน่าเกลียด คุณต้องดูสองครั้งเพื่อทราบว่าเกิดอะไรขึ้น และคุณไม่สามารถเรียกใช้การทดสอบเพียงหนึ่งเดียว (ดีฉันยังไม่ได้หา!)

แต่ฉันอาจจะผิดแน่นอน - ฉันเพิ่งอ่านประมาณ 21 โพสต์บล็อกเกี่ยวกับ "วิธีทำง่ายๆ TDD โดยใช้ VSTS" ฉันควรจะอ่านมากขึ้นคุณพูดถูก

สำหรับ nUnit ฉันอ่านมัน และฉันถูก TDDing ในวันเดียวกัน ด้วยความสนุกสนาน

อย่างไรก็ตามฉันมักจะรักผลิตภัณฑ์ของ Microsoft Visual Studio เป็นเครื่องมือที่ดีที่สุดที่นักพัฒนาสามารถซื้อได้ แต่การจัดการ TDD และรายการงานใน Visual Studio Team System แย่มากจริงๆ

ทั้งหมดที่ดีที่สุด ซิลแว็ง


9

ฉันได้รับข้อความว่า "โครงสร้างไฟล์ NUnit ยิ่งกว่า VSTest" ... แน่นอนถ้าคุณชอบโครงสร้างไฟล์ NUnit คุณสามารถใช้วิธีนี้ในวิธีอื่นเช่นนี้ (NUnit-> VS):

 #if !MSTEST
  using NUnit.Framework;
 #else
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
  using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
  using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
  using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
 #endif

หรือการแปลงอื่น ๆ ... :-) การใช้ที่นี่เป็นเพียงนามแฝงของคอมไพเลอร์


1
ฉันไม่เข้าใจสิ่งที่คุณกำลังพูดที่นี่
PositiveGuy

ไม่มีการตั้งค่าระดับการติดตั้ง / การฉีกขาด :( หรือพวกเขาคิดว่าเราใช้ ctor และ dtor หรือไม่
JDPeckham

9

ก่อนอื่นฉันต้องการแก้ไขข้อความผิด: คุณสามารถเรียกใช้ msTest นอก Visual Studio โดยใช้บรรทัดคำสั่ง แม้ว่าเครื่องมือ CI หลายรายการเช่น TeamCity จะสนับสนุน NUnit ได้ดีขึ้น (อาจเปลี่ยนไปเนื่องจาก msTest เป็นที่นิยมมากกว่า) ในโครงการปัจจุบันของเราเราใช้ทั้งคู่และสิ่งที่แตกต่างกันอย่างมากที่เราพบคือ mstest ทำงานเป็น 32 บิตเสมอในขณะที่ NUnit ทำงานเป็นแบบทดสอบ 32 บิตหรือ 64 บิตซึ่งสำคัญหากรหัสของคุณใช้รหัสพื้นเมืองที่ขึ้นกับ 32/64


8

ฉันเริ่มต้นด้วย MSTest แต่เปลี่ยนด้วยเหตุผลง่าย ๆ เพียงข้อเดียว MSTest ไม่สนับสนุนการสืบทอดวิธีทดสอบจากชุดประกอบอื่น

ฉันเกลียดความคิดในการเขียนการทดสอบเดียวกันหลายครั้ง โดยเฉพาะอย่างยิ่งในโครงการขนาดใหญ่ที่วิธีการทดสอบสามารถทดสอบได้ 100 แบบ

NUnit ทำสิ่งที่ฉันต้องการอย่างเต็มที่ สิ่งเดียวที่ขาดหายไปกับ NUnit คือ Visual Studio Addin ซึ่งสามารถแสดงสถานะสีแดง / เขียว (เช่น VSTS) ของการทดสอบแต่ละครั้ง



7

หากคุณกำลังพิจารณา MSTest หรือ nUnit ฉันขอแนะนำให้คุณดูที่ mbUnit เหตุผลของฉันคือ

  1. TestDriven.Net เข้ากันได้ TestDriven.Net.ReRunWithDebugger ไม่มีสิ่งใดที่ผูกพันกับชุดแป้นพิมพ์
  2. กรอบงาน Gallio Gallio เป็นนักวิ่งทดสอบอย่าง nUnits ข้อแตกต่างคือมันไม่สนใจว่าคุณเขียนการทดสอบใน nUnit, msTest, xUnit หรือ mbUnit พวกเขาทั้งหมดวิ่งหนี
  3. ความเข้ากันได้กับ nUnit คุณสมบัติทั้งหมดใน nUnit ได้รับการสนับสนุนโดย mbUnit ฉันคิดว่าคุณไม่จำเป็นต้องเปลี่ยนคุณลักษณะของคุณ (จะต้องตรวจสอบว่า) เพียงแค่การอ้างอิงและการใช้งานของคุณ
  4. ยืนยันการสะสม mbUnit มีกรณี Assert เพิ่มเติมรวมถึงคลาส CollectionAssert โดยทั่วไปคุณไม่จำเป็นต้องเขียนการทดสอบของคุณเองอีกต่อไปเพื่อดูว่ามี 2 คอลเลกชันที่เหมือนกันหรือไม่
  5. การทดสอบเชิง Combinatorial มันจะไม่เจ๋งถ้าคุณสามารถจัดหาข้อมูลสองชุดและรับการทดสอบสำหรับการรวมกันของข้อมูลทั้งหมด มันอยู่ใน mbUnit

ตอนแรกฉันเลือก mbUnit เนื่องจากฟังก์ชั่น [RowTest .... ] และฉันไม่พบเหตุผลที่จะย้อนกลับ ฉันย้ายชุดทดสอบที่ใช้งานอยู่ทั้งหมดของฉันไปจาก nUnit และไม่เคยหันกลับมามอง ตั้งแต่นั้นมาฉันได้เปลี่ยนทีมพัฒนาสองทีมให้เป็นประโยชน์


6

เท่าที่ฉันรู้มีสี่กรอบสำหรับการทดสอบหน่วยกับ. NET วันนี้

  • NUnit
  • MbUnit
  • MSTest
  • xUnit

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

หากคุณเพิ่งเริ่มต้นกับการทดสอบหน่วยมันอาจไม่สร้างความแตกต่างมากนัก เมื่อคุณเร่งความเร็วคุณจะอยู่ในตำแหน่งที่ดีกว่าที่จะตัดสินว่ากรอบไหนดีที่สุดสำหรับความต้องการของคุณ


6

ฉันไม่ชอบกรอบการทดสอบ VS ในตัวเพราะมันบังคับให้คุณสร้างโครงการแยกต่างหากเมื่อเทียบกับการทดสอบของคุณเป็นส่วนหนึ่งของโครงการที่คุณกำลังทดสอบ


3
คุณสามารถหลอก Visual Studio ได้ด้วยตนเองโดยการแก้ไขไฟล์โครงการและเพิ่มค่า ProjectTypeGuids ที่ใช้เพื่อระบุโครงการทดสอบ: & lt; ProjectTypeGuids & gt; {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-113 BF4B-00C04F79EFBC} & lt; / ProjectTypeGuids & gt;
Paul Ruane

5

MSTest โดยพื้นฐานแล้ว NUnit ได้ทำใหม่เล็กน้อยด้วยคุณสมบัติใหม่บางอย่าง (เช่นการตั้งค่าการประกอบและการฉีกขาดไม่ใช่แค่การติดตั้งและระดับการทดสอบ) และการขาดบิตที่ดีที่สุดบางส่วน (เช่นไวยากรณ์ข้อ จำกัด 2.4 ใหม่) NUnit เป็นผู้ใหญ่มากขึ้นและมีการสนับสนุนจากผู้ขายรายอื่นมากขึ้น และแน่นอนว่ามันฟรีตลอดเวลา (ในขณะที่ MSTest ทำให้เป็นรุ่น Professional ของปี 2008 ก่อนหน้านั้นจะมี SKU ราคาแพงกว่า) โครงการ ALT.NET ส่วนใหญ่จะใช้

ต้องบอกว่ามีบาง บริษัท ที่ไม่เต็มใจที่จะใช้บางสิ่งบางอย่างที่ไม่มีฉลาก Microsoft อยู่และโดยเฉพาะอย่างยิ่งรหัส OSS ดังนั้นการมีกรอบการทดสอบอย่างเป็นทางการของ MS อาจเป็นแรงจูงใจที่ บริษัท เหล่านั้นจำเป็นต้องได้รับการทดสอบ และขอพูดตามตรงว่านี่คือการทดสอบที่สำคัญไม่ใช่เครื่องมือที่คุณใช้ (และใช้รหัสของ Tuomas Hietanenด้านบนคุณสามารถเปลี่ยนกรอบการทดสอบแทนได้)


ฉันชอบไวยากรณ์ที่ขัดแย้งของ NUnit แต่ฉันคิดว่าคุณควรอ่านสิ่งนี้เกี่ยวกับSetUpและTearDownคุณลักษณะ: jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.html
ไม่มีใครใน

4

ด้วยการเปิดตัวใน. NET 4.0 ของระบบรหัสสัญญาและความพร้อมใช้งานของตัวตรวจสอบแบบคงที่คุณจะต้องเขียนกรณีทดสอบน้อยลงในทางทฤษฎีและเครื่องมือเช่นPexจะช่วยระบุกรณีเหล่านั้น เกี่ยวข้องกับการสนทนานี้ถ้าคุณต้องการทดสอบหน่วยของคุณน้อยลงเพราะสัญญาของคุณครอบคลุมหางของคุณแล้วทำไมไม่เพียงแค่ไปข้างหน้าและใช้ชิ้นส่วนในตัวเพราะนั่นเป็นการพึ่งพาน้อยกว่าในการจัดการ ทุกวันนี้ฉันเป็นคนเรียบง่าย :-)

ดูสิ่งนี้ด้วย:


3

ฉันต้องการใช้กรอบการทดสอบเล็กน้อยของ MS แต่ตอนนี้ฉันกำลังใช้ NUnit อยู่ ปัญหาเกี่ยวกับ MS โดยทั่วไป (สำหรับฉัน)

  • แชร์ไฟล์ "ทดสอบ" (ไม่มีจุดหมาย) ที่ต้องดูแลรักษา
  • รายการทดสอบทำให้เกิดข้อขัดแย้งกับผู้พัฒนา / VCS หลายคน
  • UI แบบรวมที่แย่ - การตั้งค่าที่สับสน, การเลือกทดสอบที่น่าเบื่อ
  • ไม่มีนักวิ่งภายนอกที่ดี

Caveats - ถ้าฉันทดสอบไซต์ aspx ฉันจะใช้ MS อย่างแน่นอน - ถ้าฉันพัฒนาโซโล MS ก็น่าจะดี - ถ้าฉันมีทักษะ จำกัด และไม่สามารถกำหนดค่า NUnit ได้ :)

ฉันพบว่ามันง่ายกว่ามากที่จะเขียนการทดสอบของฉันและดับ NUnitGUI หรือปลายด้านหน้าอีกอันหนึ่ง (testDriven ไกลเกินกว่าไกลเกินไป) การตั้งค่าการดีบักด้วยเวอร์ชัน commandline นั้นค่อนข้างง่าย


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