คำถามติดแท็ก xunit.net

7
NUnit vs. MbUnit กับ MSTest vs. xUnit.net [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา มีกรอบ unittesting ค่อนข้างมากสำหรับ NET. ฉันพบการเปรียบเทียบคุณสมบัติเล็กน้อยนี้: http://xunit.github.io/docs/comparisons.html ตอนนี้ฉันจะเลือกสิ่งที่ดีที่สุดสำหรับเรา แต่อย่างไร มันสำคัญไหม อันไหนเป็นข้อพิสูจน์ในอนาคตมากที่สุดและมีแรงผลักดันที่ดีอยู่ข้างหลัง? ฉันควรสนใจเกี่ยวกับคุณสมบัติหรือไม่ ในขณะที่ xUnit ดูเหมือนจะทันสมัยที่สุดและออกแบบมาโดยเฉพาะสำหรับ. NET แต่ NUnit ก็ดูเหมือนจะเป็นที่ยอมรับอย่างกว้างขวาง MSTest ถูกรวมเข้ากับ Visual Studio อีกครั้ง ...

11
ดำเนินการทดสอบหน่วยตามลำดับ (แทนที่จะทำแบบขนาน)
ฉันกำลังพยายามทดสอบหน่วยเครื่องมือจัดการโฮสต์ WCF ที่ฉันเขียน โดยทั่วไปเอ็นจิ้นจะสร้างอินสแตนซ์ ServiceHost ในทันทีตามการกำหนดค่า สิ่งนี้ช่วยให้เราสามารถกำหนดค่าบริการใหม่ได้แบบไดนามิกโดยไม่ต้องนำบริการทั้งหมดลงและเริ่มการทำงานใหม่เมื่อใดก็ตามที่มีการเพิ่มบริการใหม่หรือบริการเก่าถูกลบออก ฉันประสบปัญหาในการทดสอบหน่วยเครื่องมือการจัดการโฮสต์นี้อย่างไรก็ตามเนื่องจากวิธีการทำงานของ ServiceHost หากมีการสร้าง ServiceHost แล้วเปิดและยังไม่ได้ปิดสำหรับปลายทางเฉพาะจะไม่สามารถสร้าง ServiceHost อื่นสำหรับจุดสิ้นสุดเดียวกันได้ซึ่งส่งผลให้เกิดข้อยกเว้น เนื่องจากความจริงที่ว่าแพลตฟอร์มการทดสอบหน่วยที่ทันสมัยขนานกับการดำเนินการทดสอบฉันจึงไม่มีวิธีที่มีประสิทธิภาพในการทดสอบหน่วยของโค้ดนี้ ฉันใช้ xUnit.NET โดยหวังว่าเนื่องจากความสามารถในการขยายตัวของมันฉันจึงสามารถหาวิธีบังคับให้รันการทดสอบแบบอนุกรมได้ อย่างไรก็ตามฉันไม่มีโชคเลย ฉันหวังว่าใครบางคนที่นี่ใน SO พบปัญหาที่คล้ายกันและรู้วิธีรับการทดสอบหน่วยเพื่อเรียกใช้แบบอนุกรม หมายเหตุ: ServiceHostเป็นคลาส WCF ซึ่งเขียนโดย Microsoft ฉันไม่มีความสามารถที่จะเปลี่ยนพฤติกรรมได้ การโฮสต์แต่ละจุดสิ้นสุดของบริการเพียงครั้งเดียวก็เป็นพฤติกรรมที่เหมาะสมเช่นกัน ... อย่างไรก็ตามไม่ได้เอื้อต่อการทดสอบหน่วยโดยเฉพาะ

4
วิธีการตรวจสอบขนาดคอลเลกชันใน xUnit เป็นอย่างไร
ฉันมีชุดทดสอบในชุดทดสอบที่มีลักษณะดังนี้: [Fact] public void VerifySomeStuff() { var stuffCollection = GetSomeStuff(); Assert.Equal(1, stuffCollection.Count()); } การทดสอบนี้ได้ผลตามที่ฉันคาดหวัง แต่เมื่อฉันเรียกใช้ xUnit จะพิมพ์คำเตือน: คำเตือน xUnit2013: อย่าใช้ Assert.Equal () เพื่อตรวจสอบขนาดคอลเลกชัน อย่างไรก็ตามไม่มีทางเลือกอื่นที่แนะนำในคำเตือนและการค้นหาโดย Google จะพาฉันไปที่ซอร์สโค้ดใน xUnit สำหรับการทดสอบที่ยืนยันว่ามีการพิมพ์คำเตือนนี้ หากAssert.Equal()ไม่ใช่วิธีที่ถูกต้องในการตรวจสอบความยาวของคอลเลคชันคืออะไร? เพื่อชี้แจง: ฉันตระหนักดีว่าฉันสามารถ "หลอก" xUnit ไม่ให้ส่งเสียงเตือนนี้ได้โดยการแยกตัวแปรหรือใช้Assert.True(stuff.Count() == 1)แทน หลังเป็นเพียงแฮ็คและก่อนหน้านี้รู้สึกเหมือนว่า xUnit พยายามหลีกเลี่ยงการทำซ้ำหลาย ๆ ครั้งIEnumerable<T>นี่เป็นวิธีที่ผิดที่จะไป (เพราะฉันจะได้รับคำแนะนำเกี่ยวกับคอมไพเลอร์แยกต่างหากหากเป็นปัญหา) และ xUnit ตัวเองไม่ควรต้องประเมินอินพุตมากกว่าหนึ่งครั้ง (อันที่จริงมันอาจจะได้รับอินพุตเดียวกันโดยไม่คำนึงถึงการแยกตัวแปรเนื่องจากวิธีการเรียกใช้ฟังก์ชัน C #) ดังนั้นฉันไม่เพียง แต่สนใจที่จะลบคำเตือนนั้นออกจากผลลัพธ์ของฉัน …
112 c#  xunit  xunit.net 

6
ทดสอบการกำหนดพารามิเตอร์ใน xUnit.net คล้ายกับ NUnit
มีวิธีการใดในกรอบงาน xUnit.net ที่คล้ายกับคุณสมบัติต่อไปนี้ของ NUnit หรือไม่? [Test, TestCaseSource("CurrencySamples")] public void Format_Currency(decimal value, string expected){} static object[][] CurrencySamples = new object[][] { new object[]{ 0m, "0,00"}, new object[]{ 0.0004m, "0,00"}, new object[]{ 5m, "5,00"}, new object[]{ 5.1m, "5,10"}, new object[]{ 5.12m, "5,12"}, new object[]{ 5.1234m, "5,12"}, new object[]{ 5.1250m, "5,13"}, // round …

5
xUnit.net: Global setup + teardown?
คำถามนี้เป็นคำถามเกี่ยวกับกรอบการทดสอบหน่วยxUnit.net ฉันจำเป็นต้องเรียกใช้โค้ดก่อนที่จะทำการทดสอบใด ๆ และยังมีโค้ดบางส่วนหลังจากการทดสอบทั้งหมดเสร็จสิ้น ฉันคิดว่าควรมีอินเทอร์เฟซแอตทริบิวต์หรือเครื่องหมายบางอย่างเพื่อระบุการเริ่มต้นส่วนกลางและรหัสการสิ้นสุด แต่หาไม่พบ หรืออีกวิธีหนึ่งถ้าฉันเรียกใช้ xUnit โดยทางโปรแกรมฉันสามารถบรรลุสิ่งที่ฉันต้องการด้วยรหัสต่อไปนี้: static void Main() { try { MyGlobalSetup(); RunAllTests(); // What goes into this method? } finally { MyGlobalTeardown(); } } ใครช่วยให้คำแนะนำเกี่ยวกับวิธีการประกาศหรือเรียกใช้โค้ดการตั้งค่า / การฉีกขาดทั่วโลกโดยใช้โปรแกรมได้บ้าง
108 c#  .net  xunit.net 

8
ส่งผ่านพารามิเตอร์ที่ซับซ้อนไปยัง [ทฤษฎี]
Xunit มีคุณสมบัติที่ดี : คุณสามารถสร้างการทดสอบหนึ่งรายการด้วยTheoryแอตทริบิวต์และใส่ข้อมูลในInlineDataแอตทริบิวต์และ xUnit จะสร้างการทดสอบมากมายและทดสอบทั้งหมด ฉันต้องการจะมีบางสิ่งบางอย่างเช่นนี้ แต่พารามิเตอร์เป็นวิธีของฉันไม่ได้เป็น 'ข้อมูลง่าย (เช่นstring, int, double) แต่รายการระดับของฉัน: public static void WriteReportsToMemoryStream( IEnumerable<MyCustomClass> listReport, MemoryStream ms, StreamWriter writer) { ... }

16
ไม่พบ testhost.dll โปรดเผยแพร่โครงการทดสอบของคุณแล้วลองอีกครั้ง
ฉันมีไลบรารีคลาส dotnet core อย่างง่ายพร้อมวิธีทดสอบ XUnit เดียว: TestLib.csproj: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.console" Version="2.4.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="xunit.runners" Version="2.0.0" /> </ItemGroup> </Project> BasicTest.cs: using Xunit; …

6
การจำลอง IPrincipal ใน ASP.NET Core
ฉันมีแอปพลิเคชัน ASP.NET MVC Core ที่ฉันกำลังเขียนการทดสอบหน่วย หนึ่งในวิธีการดำเนินการใช้ชื่อผู้ใช้สำหรับฟังก์ชันบางอย่าง: SettingsViewModel svm = _context.MySettings(User.Identity.Name); ซึ่งเห็นได้ชัดว่าล้มเหลวในการทดสอบหน่วย ฉันมองไปรอบ ๆ และคำแนะนำทั้งหมดมาจาก. NET 4.5 เพื่อล้อเลียน HttpContext ฉันแน่ใจว่ามีวิธีที่ดีกว่าในการทำเช่นนั้น ฉันพยายามฉีด IPrincipal แต่เกิดข้อผิดพลาด และฉันก็ลองทำเช่นนี้ (จากความสิ้นหวังฉันคิดว่า): public IActionResult Index(IPrincipal principal = null) { IPrincipal user = principal ?? User; SettingsViewModel svm = _context.MySettings(user.Identity.Name); return View(svm); } แต่สิ่งนี้ทำให้เกิดข้อผิดพลาดเช่นกัน ไม่พบสิ่งใดในเอกสารเช่นกัน ...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.