เหตุใด Visual Studio 2015/2017/2019 นักวิ่งทดสอบจึงไม่ค้นพบการทดสอบ xUnit v2 ของฉัน


173

UPDATE: การเพิ่ม 2019; กลไกการบูรณาการการค้นพบ / นักวิ่งเหมือนกับปี 2017 และ 2015 ดังนั้นสิ่งสำคัญที่สามารถผิดพลาดได้เหมือนกัน


ฉันอ่านแล้วเหตุใดนักวิ่ง xUnit จึงไม่พบการทดสอบของฉันซึ่งครอบคลุมเหตุผลที่ xUnit จะไม่สามารถหาการทดสอบของคุณได้แต่ปัญหาของฉันแตกต่างกัน - ฉันมั่นใจว่าไม่มีอะไรละเอียดเกิดขึ้นกับการทดสอบของฉัน (พวกเขาได้ทำงานในสภาพแวดล้อมอื่น ๆ นี้น่าจะเป็นเพียงแค่เครื่องของฉัน) - ของ Visual Studio ทดสอบวิ่งใน Visual Studio 2015 [Community Edition] เป็นเพียงการไม่แสดงใด ๆของการทดสอบของฉัน ฉันไม่ได้ทำอะไรที่น่าตื่นเต้นจากระยะไกล ทดสอบเป้าหมาย xUnit.net v2 บนเดสก์ท็อป

ฉันดูในหน้าต่างผลลัพธ์และฉันไม่เห็นอะไรเลยในการทดสอบในส่วนแสดงผลลัพธ์จากแท็บ



1
มันเป็นปัญหาที่เป็นไปได้เพียงอย่างเดียวแต่เห็นได้ชัดว่าคุณต้องรวบรวมโครงการทดสอบก่อนที่จะปรากฏในเครื่องมือทดสอบ
Niklas Peter

เกี่ยวข้อง: stackoverflow.com/a/29589576/6913871
Ruben Bartelink

สิ่งนี้ใช้ได้กับฉัน - stackoverflow.com/questions/42861930/…
Prisoner ZERO

การติดตั้ง Xunit.Runner.VisualStudio ได้แก้ปัญหาของฉันแล้ว
Bendram

คำตอบ:


210
  1. กำจัดข้อยกเว้นการค้นพบจากการสอบถามของคุณ ไปที่หน้าต่างแสดงผล (Ctrl-Alt-O) จากนั้นสลับการแสดงผลลัพธ์จากดรอปดาวน์ (Shift-Alt-S) เป็นแบบทดสอบและตรวจสอบให้แน่ใจว่าไม่มีข้อยกเว้นการค้นพบ

  2. การทดสอบ | การตั้งค่าการทดสอบ | สถาปัตยกรรมตัวประมวลผลเริ่มต้นสามารถช่วยได้หากการทดสอบของคุณเฉพาะ x86 / x64 และการค้นพบกำลังกระตุ้นให้เกิดข้อยกเว้นเกี่ยวกับbittednessเช่นไม่ใช่AnyCpu

  3. ตามที่แนะนำในคำตอบนี้ (upvote ถ้าเทคนิคช่วย) การ รัน desktop console runner ( คำแนะนำ ) สามารถตรวจสอบข้ามที่ดีเพื่อกำจัดความเป็นไปได้อื่น ๆ เช่นไฟล์ config mangled: -

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>

    หมายเหตุxunit.runner.consoleแพ็คเกจถูกเลิกใช้ - เมื่อคุณทำงานใน VS คุณจะสามารถdotnet testใช้งานได้ในบริบท CI ด้วย


ไปอ่านเอกสาร - มันครอบคลุมทันสมัยรวมถึงข้อมูลการแก้ไขปัญหาและใช้เวลา PR: -

หมายเหตุสำคัญ: หากคุณเคยติดตั้ง xUnit.net Visual Studio Runner VSIX (ส่วนขยาย) คุณต้องถอนการติดตั้งก่อน Visual Studio Runner นั้นแจกจ่ายผ่านทาง NuGet เท่านั้น ที่จะลบมันไปเครื่องมือ > ส่วนขยายและปรับปรุง เลื่อนไปที่ด้านล่างของรายการและหากติดตั้ง xUnit.net ไว้ให้ถอนการติดตั้ง สิ่งนี้จะบังคับให้คุณเริ่ม Visual Studio ใหม่

หากคุณมีปัญหาในการค้นหาหรือเรียกใช้การทดสอบคุณอาจตกเป็นเหยื่อของแคชนักวิ่งที่เสียหายภายใน Visual Studio ล้างแคชนี้ปิดตัวลงอินสแตนซ์ทั้งหมดของ Visual Studio %TEMP%\VisualStudioTestExplorerExtensionsแล้วลบโฟลเดอร์ ตรวจสอบให้แน่ใจว่าโครงการของคุณเชื่อมโยงกับแพ็คเกจนักวิ่ง Visual Studio รุ่นเดียว ( xunit.runner.visualstudio)

ขั้นตอนต่อไปนี้ใช้ได้สำหรับฉัน:

  1. (เฉพาะในกรณีที่คุณสงสัยว่ามีความยุ่งเหยิงร้ายแรงในเครื่องของคุณ - โดยทั่วไปแล้วกรณีที่พบบ่อยคือการติดตั้ง Visual Studio นั้นยังไม่ได้ติดตั้ง)

    ทำDEL %TEMP%\VisualStudioTestExplorerExtensionsตามคำแนะนำ: -

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

  2. ติดตั้งแพคเกจ NuGet xunit.runner.visualstudioในทุกโครงการทดสอบ

    • แพคเกจ:

      .paket\paket add nuget xunit.runner.visualstudio -i

      คุณต้องลงเอยด้วยสิ่งต่อไปนี้ในpaket.dependencies :

      nuget xunit.runner.visualstudio version_in_path: true

      หมายเหตุversion_in_path: trueบิตเป็นสิ่งสำคัญ

    • Nuget: ไปที่ Package Manager Console (Alt-T, N, O) และ

      Install-Package xunit.runner.visualstudio)

    สร้างใหม่เพื่อให้แน่ใจว่าxunit.runnerสิ้นสุดลงในเอาต์พุต dir

  3. ปิด Test Explorer <- นี่เป็นบิตที่ขาดหายไปสำหรับฉัน

  4. เปิด Test Explorer อีกครั้ง (Alt-S, W, T)

  5. เรียกใช้การทดสอบทั้งหมด (Ctrl R, A)


12
"Close Test Explorer <- นี่เป็นบิตที่ขาดหายไปสำหรับฉัน" นี่เป็นขั้นตอนที่สำคัญที่สุดที่ฉันพลาดเช่นกันและใช้เวลา 5 ชั่วโมงในการหา ขอบคุณฉันควรจะได้ให้ความสนใจกับขั้นตอน :)
Esen

1
xunit VS runner ทำงานเพื่อ sln ของฉัน อย่างไรก็ตามมันหยุดแสดงหนึ่งวัน พบว่าฉันไม่ได้ติดตั้ง VS ที่กำลังทำงานอยู่และมันอาจจะเป็นเพราะแคชที่เหลือจาก sln อื่นที่ติดตั้งนักวิ่ง หลังจากติดตั้งทางวิ่งแล้วสิ่งต่างๆก็ใช้ได้ดีอีกครั้ง ดังนั้นอย่าลืมติดตั้งนักวิ่งสำหรับทุก sln
ZZZ

1
สิ่งนี้ไม่น่าเชื่อ การลบโฟลเดอร์ที่มีโฟลเดอร์ว่างอื่นอีกสามโฟลเดอร์ที่อยู่ในนั้นจะแก้ไขปัญหาได้
t3chb0t

1
@martinJH ฉันมีตัวเองตอบหนึ่งสำหรับที่ (เชื่อมโยงใน OP): - stackoverflow.com/questions/16214684/ … ;) ไม่เปิดเผยว่าฉันค้นพบว่า
Ruben Bartelink

1
สิ่งที่แปลกจริงๆ แต่การลบ%TEMP%\VisualStudioTestExplorerExtensionsและรีสตาร์ท VS ทำงานได้ในที่สุด!
Hinrich

35

ฉันต้องเปลี่ยนการตั้งค่าการทดสอบหลังจากเปลี่ยนการทดสอบ CPU ของโครงการเป็น x64 จากนั้นทำการทดสอบที่ตรวจพบอีกครั้ง

สถาปัตยกรรม


คุณเห็นข้อความก่อนหน้านั้นในผลลัพธ์การค้นหาการทดสอบหรือไม่
Ruben Bartelink

ไม่ฉันไม่เห็นข้อผิดพลาดใด ๆ จึงต้องใช้เวลาพอสมควร
สูงสุด

อืมม; แปลก (ดูด้านบนของคำตอบของฉัน - มันอธิบายตำแหน่งที่จะดู; โดยปกติแล้วจะถูกตั้งค่าสถานะ (แม้ว่าจะมีกรณี def ที่ไม่มีข้อความใด ๆ เลย))
Ruben Bartelink

สิ่งนี้แก้ไขได้สำหรับฉัน ฉันไม่รู้ว่าทำไมสิ่งนี้ถึงช่วยได้ แต่มันก็เป็นเช่นนั้น
VSO

2
ฉันต้องทำความสะอาด -> สร้างใหม่หลังจากเปลี่ยน
user2023861

32

วิธีแก้ปัญหาด้านบนไม่ได้ผลสำหรับฉัน (dotnetcore 1.1, VS2017) นี่คือสิ่งที่แก้ไขมัน:

  1. เพิ่มแพ็คเกจ NuGet Microsoft.TestPlatform.TestHost
  2. เพิ่มแพ็คเกจ NuGet Microsoft.NET.Test.Sdk

สิ่งเหล่านี้เพิ่มเติมจากแพ็คเกจที่ฉันติดตั้งก่อนหน้านี้:

  • xunit (2.3.0-beta1-build3642)
  • xunit.runner.visualstudio (2.3.0-beta1-build1309)

9
สิ่งนี้ช่วยฉันฉันขาดแพ็คเกจ xunit.runner.visualstudio
Ognjen Babic

My .NET 4.72 MS Test project จำเป็นTestPlatform.TestHostเฉพาะเมื่อทำการโยกย้ายจาก VS 2017 ไปยัง VS 2019
egamegaMan

วิธีนี้แก้ไขได้สำหรับฉัน ในหน้าต่างผลลัพธ์ให้เลือกการทดสอบจากดรอปดาวน์ => ดูข้อความ "ไม่มี TestHost"
datchung

22

ติดตั้งxunit.runner.visualstudioแพคเกจสำหรับโครงการทดสอบ


คำตอบที่ดีที่สุดในหน้า แก้ไขปัญหาของฉัน
RB Davidson

14

ทำตามขั้นตอนนี้:

  1. อัปเดตของคุณMsTest.TestAdapterและจากMsTest.TestFramework dll'snugget package manager
  2. ทำความสะอาดทางออกของคุณ
  3. สร้างโซลูชันของคุณ

1
คุณสามารถเปิดโคลนของคำถามนี้และตอบด้วยตนเองได้ไหม อันนี้เกี่ยวกับ xUnit v2 และใหม่กว่า แม้แต่คำตอบที่ xUnit v1 ยังไม่มีที่ไหนเลย คุณสามารถเชื่อมโยงไปยังดูได้ที่ด้านบนของคำถามหรือฉันสามารถเชื่อมโยงไปยังคำถาม
Ruben Bartelink

วิธีนี้ใช้ได้ผล .. ไม่อย่างนั้นทุกครั้งที่ฉันต้องลบ%TEMP%\VisualStudioTestExplorerExtensionsและบางครั้งฉันก็ต้องทำการทดสอบจากคอนโซล
Venky

ฉันใช้ NUnit และฉันแก้ไขปัญหานี้ด้วยการอัพเดต NUnit3TestAdapter เป็นเวอร์ชันล่าสุดผ่าน NuGet
dpberry178

ขอบคุณสำหรับสิ่งนี้ - ในอินสแตนซ์ของฉันเพิ่งได้รับการอัปเดตแพคเกจ - ติดตั้ง MSTest.TestAdapter และการทดสอบกลับมาอีกครั้ง
Rob

10

ฉันต้องดิ้นรนกับบ่ายนี้ตลอดเวลาในขณะที่ทำงานกับโครงการ ASP Core และ xUnit 2.2.0 ทางออกสำหรับฉันเพิ่มการอ้างอิงถึงMicrosoft.DotNet.InternalAbstractions

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


"แต่รายงานข้อผิดพลาดที่มีประโยชน์" ... ซึ่งเป็นข้อใด คุณสามารถตรวจสอบได้ว่ามันไม่ได้อยู่ในรายการข้อผิดพลาดการค้นพบตามที่ระบุใน OP - คุณสามารถระบุได้อย่างมั่นใจ "ฉันได้ดูในหน้าต่างผลลัพธ์และฉันไม่เห็นอะไรเลยในการทดสอบแสดงแท็บผลลัพธ์ ." ?
Ruben Bartelink

1
ดูคำตอบที่อัปเดตแล้วฉันจะโพสต์ข้อมูลรหัสส่งคืนในภายหลังในกรณีที่มีความเกี่ยวข้อง
Tom Makin

9

มันเกิดขึ้นกับฉันสองสามครั้ง - เมื่อฉันทำความสะอาดโครงการและสร้างมันอีกครั้งก็มีแนวโน้มที่จะดี


ข้อความปากโป้งใด ๆ เมื่อคุณดูในหน้าต่างผลลัพธ์ด้วยการทดสอบที่เลือกในเมนูดรอปดาวน์
Ruben Bartelink

2
ไม่มีเลยก็แค่บอกว่าไม่พบการทดสอบ
Liam

ในกรณีของฉัน Test Explorer หยุดทำงานในการทดสอบที่ล้มเหลวก่อนหน้านี้ ถ้าฉันเรียกดูและพยายามคลิกขวา -> เรียกใช้หรืออะไรก็ตามทั้ง VS จะหยุดทำงาน เพียงแค่ทำการ Clean และสร้างใหม่เคลียร์สถานะการทดสอบและแก้ไขปัญหาให้ฉัน
Piedone

ฉันขอเพิ่มเติมได้หรือไม่ว่าการสร้างเพียงอย่างเดียว (เช่น F6) จะไม่ช่วยคุณต้องคลิกขวาที่โซลูชันใน VS Solution Explorer และคลิกสร้างโซลูชันใหม่
Piedone

8

ตรวจสอบให้แน่ใจว่าระดับการทดสอบของคุณเป็นที่สาธารณะ


กล่าวอย่างชัดเจนในเงื่อนไขแรก (ฉันเชื่อมโยงคำถามอื่นที่ครอบคลุมกรณีนั้น); Q + A นี้เป็นเพียงเกี่ยวกับการแก้ไขปัญหาวิธีปกติทดสอบตกลงที่ทำงานในที่อื่น ๆ ไม่ทำงานสำหรับใครบางคนตอนนี้ในสภาพแวดล้อมที่กำหนด สำหรับฉันคำตอบนี้ทำให้เกิดความสับสนเพราะมันเจือจาง
Ruben Bartelink

1
ขอบคุณมาก. คุณบันทึกวันของฉัน
hellouworld

7

เหตุผลในกรณีของฉันคือการสร้างเป้าหมายไม่เหมือนกันระหว่างดีบักเกอร์โครงการและนักทดสอบ ในการรวมองค์ประกอบเหล่านั้นเข้าด้วยกัน:

  1. ทดสอบ> ทดสอบการตั้งค่า> สถาปัตยกรรมตัวประมวลผลเริ่มต้น จากนั้นเลือก X64 หรือ X86
  2. โครงการ> (โครงการของคุณ) คุณสมบัติ> สร้าง (แท็บ)> เป้าหมายแพลตฟอร์ม

หลังจากที่เหมือนกันสร้างโซลูชันของคุณใหม่จากนั้นวิธีทดสอบจะปรากฏขึ้นสำหรับคุณ


6

หลังจากใช้เวลา 2 วัน ... ไม่มีข้อใดข้อหนึ่งสำหรับฉัน "โซลูชัน" เดียวเท่านั้น: ไปที่คุณสมบัติโครงการ -> สร้างแท็บ จากนั้นคลิกปุ่มขั้นสูงที่มุมล่างขวาของบานหน้าต่าง เปลี่ยน "ข้อมูลการดีบัก:" เป็น "เต็ม" และคลิกตกลง

นี่คือภาพหน้าจอ: ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่


ฟังดูเจ็บปวด ขอบคุณสำหรับการแบ่งปันและหวังว่าจะช่วยให้ใครบางคนในบางวัน อย่างไรก็ตามฉันต้องพูดว่า: ฉันไม่สามารถคิดถึงเหตุผลใด ๆ ที่ระดับข้อมูลดีบั๊กจะส่งผลกระทบต่อกระบวนการค้นพบดังนั้นฉันสามารถพูดได้ว่า "ฉันไม่คิดว่านั่นเป็นสิ่งที่ยิงหมีจริง" - หวังว่าฉันจะผิด แม้ว่า;)
Ruben Bartelink

@ RubenBartelink เห็นด้วยอย่างสมบูรณ์กับคุณนั่นคือเหตุผลที่ฉันพูดถึง "การแก้ปัญหา" ในใบเสนอราคา :) แต่แปลกมากพอมันทำงานได้ทันทีเมื่อฉันทำสิ่งนี้
อยากรู้อยากเห็นBoy

ขอบคุณมาก. นี่ก็แก้ไขสำหรับฉัน :)
Babulaas

6

ฉันใช้ xUnit 2.2.0

ปัญหาของฉันคือวิธีแก้ปัญหาของฉันไม่สามารถค้นหา Dll และ app.configพยายามแก้ไขปัญหาเหล่านั้น ข้อผิดพลาดไม่ปรากฏขึ้นในหน้าต่างผลลัพธ์การทดสอบใน Visual Studio

ฉันสามารถระบุข้อผิดพลาดเมื่อฉันติดตั้งxunit.runner.consoleและพยายามเรียกใช้การทดสอบผ่านทางบรรทัดคำสั่ง

วิธีการเรียกใช้การทดสอบ xUnit ใน CLI


5

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

ฉันมีปัญหาเดียวกันกับ VS 2017 ล่าสุด (รุ่น 15.5.7) และ XUnit 2.3.1 แพ็คเกจ xunit.runner.visualstudio ได้รับการติดตั้งแล้วอย่างไรก็ตามการทดสอบไม่ได้แสดงใน explorer ในตัวของ VisualStudio

ฉันทำงานเกี่ยวกับโปรเจ็กต์ดั้งเดิมที่กำหนดเป้าหมายเป็น. NET Framework 4.5 อย่างไรก็ตามเริ่มต้นด้วยรุ่น 2.2 XUnit ไม่สนับสนุน. NET Framework ต่ำกว่า 4.5.2 (ดูหมายเหตุการเผยแพร่ - XUnit 2.2: 19 กุมภาพันธ์ 2017

การเปลี่ยนกรอบงานเป้าหมายของโครงการทดสอบเป็นเวอร์ชัน> = 4.5.2 เหมาะสำหรับฉัน คุณไม่จำเป็นต้องเปลี่ยนเวอร์ชันของโครงการที่คุณกำลังทดสอบมันเป็นเพียงแค่โครงการทดสอบเท่านั้น


5

ฉันมีปัญหาเดียวกันกับ Visual Studio 2019 เพิ่งติดตั้งแพคเกจ NuGet ต่อไปนี้และแก้ไขปัญหาได้แล้ว

1) xUnit

2) xunit.runner.visualstudio

3) Microsoft.TestPlatform.TestHost

4) Microsoft.NET.Test.Sdk


3

นี่อาจเป็นเพราะกล่องกาเครื่องหมายบิลด์ไม่ได้ถูกทำเครื่องหมายสำหรับโครงการแพลตฟอร์มปัจจุบันในการกำหนดค่าการสร้าง คลิกสร้าง | เครื่องมือจัดการการกำหนดค่าจากนั้นตรวจสอบให้แน่ใจว่าโครงการทดสอบมีขีดในคอลัมน์สร้างสำหรับแพลตฟอร์มที่คุณใช้ (ตัวอย่างเช่น 'x86')

นี่เป็นทางออกที่เหมาะกับฉันอย่างแน่นอน


ฉันจะลงคะแนนนี้หากอยู่ในstackoverflow.com/questions/16214684/ …เนื่องจากไม่ใช่ xunit2 เฉพาะและรายการตรวจสอบที่ดี
Ruben Bartelink

3

ตรวจสอบให้แน่ใจว่าคุณไม่ได้เขียนการทดสอบหน่วยในไลบรารี. NET Standard 2.0 Class นักวิ่ง visualstudio ไม่สนับสนุนการทดสอบการใช้งานในไลบรารีคลาส netstandard2.0 ในขณะที่เขียนนี้

ตรวจสอบที่นี่สำหรับเมทริกซ์ความเข้ากันได้ของ Test Runner:

https://xunit.github.io/#runners


3

พบปัญหาที่คล้ายกันกับ VS ที่ไม่พบวิธีทดสอบ ในกรณีของฉันฉันมีคำหลักคงที่ด้วยวิธีการที่ฉันลบและมันทำงาน

[TestMethod]

Before: public static void Test1()

After: public void Test1()

1
ฉันต้องการถ้าไม่ได้อยู่ที่นี่เพราะนี่เป็นการทดสอบที่ถูกต้องเป็นอย่างอื่นที่ไม่สามารถพบได้ในบางตัวอย่างของ VS ฉันมีตัวเองตอบหนึ่งอีกครั้งว่าทำไมการทดสอบ xUnit ไม่สามารถค้นพบ: stackoverflow.com/questions/16214684/... ฉันขอแนะนำให้คุณสร้างสาเหตุที่ไม่สามารถทำการทดสอบ MSTest ของฉันได้ (โดย VS ถ้าคุณต้องการ) (ดังที่คุณทราบความกังวลนี้ไม่ได้นำไปใช้กับ xUnit ซึ่งเป็นอีกเหตุผลว่าทำไมมีประโยชน์อย่างที่มันเป็นคำตอบของคุณไม่ได้อยู่ที่นี่)
Ruben Bartelink

MSTest ไม่พบการทดสอบของฉันเพราะโมดิฟายเออร์ในการเข้าถึงคลาสเป็นแบบภายใน
Abdul Saboor

3
  1. ปิดอินสแตนซ์ Visual Studio ทั้งหมด
  2. ไปที่% TEMP% \ VisualStudioTestExplorerExtensions \
  3. ลบโฟลเดอร์ที่เกี่ยวข้องกับ specrun
  4. ลองอีกครั้ง

แจ้งให้เราทราบขอบคุณ


2

ในกรณีของฉันฉันมี 2 โครงการทดสอบที่แตกต่างกันในการแก้ปัญหา สามารถทดสอบ Project 1 ได้ แต่ไม่สามารถทำการทดสอบ Project 2 ได้ ฉันพบว่าการยกเลิกการโหลดการทดสอบโครงการ 1 ครั้งแรกจากนั้นปิด VS> ล้างไฟล์ temp ของฉัน> โซลูชันเปิดใหม่> สร้างใหม่อนุญาตให้ VS ค้นพบการทดสอบ Project 2 ของฉัน

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


2

ฉันทรมานจากปัญหานี้มานาน

  • ฉันมีประมาณ 100 โครงการรุ่นที่แตกต่างกันถูกปรับใช้ในเซิร์ฟเวอร์ที่แตกต่างกัน

  • การอัพเดตxunitจาก 2.2.0 เป็น 2.3.1 ไม่ใช่วิธีแก้ปัญหาเนื่องจากบิลด์ล้มเหลวใน 2.3.1

จากนั้นฉันเพิ่งอัปเดตxunit.runner.visualstudioเป็น2.3.1และทุกอย่างก็เริ่มทำงานได้ดี ฉันใช้คำสั่งนี้ในคอนโซลผู้จัดการแพ็คเกจเพื่ออัปเดตแพ็คเกจ xunit.runner.visualstudio ของฉัน

Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1

1

ผู้ร้ายที่พบบ่อยที่สุดสำหรับฉันคือ Visual Studio ที่พยายามเรียกใช้การทดสอบโดยใช้สถาปัตยกรรมที่แตกต่างจากห้องสมุดที่ใช้ทดสอบ น่าเสียดายที่มีหลายแห่งที่ดูเหมือนว่าสิ่งนี้ผิดพลาด

ใน VS 2017 ลองสร้างไฟล์ Run Settings เช่นDefault.runsettingsในโครงการทดสอบของคุณ หาก lib หลักของคุณคือ x64 เนื้อหาควรเป็น:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

จากนั้นเลือกไฟล์นี้จากการทดสอบ -> การตั้งค่าการทดสอบ -> เลือกไฟล์การตั้งค่าการทดสอบ

จากนั้นภายใต้การทดสอบ -> การตั้งค่าการทดสอบสถาปัตยกรรมตัวประมวลผลเริ่มต้นให้เลือกสถาปัตยกรรมที่ถูกต้องอีกครั้ง

อย่าลืมล้างและสร้างโซลูชันทั้งหมด คุณอาจต้องปิดและเปิดหน้าต่าง Test Explorer อีกครั้ง ค้นหาข้อผิดพลาดเพิ่มเติมในหน้าต่าง Output -> Test เพื่อหาเบาะแสเพิ่มเติมเกี่ยวกับประเภทสถาปัตยกรรมที่ไม่ถูกต้อง

เพิ่มเติม FYI รายการการตั้งค่าการทดสอบสามารถพบได้ที่นี่


1

มีอีกเหตุผลหนึ่งที่ทำให้Test Explorerไม่แสดงการทดสอบใด ๆ และต้องทำอย่างไรกับ.pdbรูปแบบไฟล์พกพาใหม่ที่เปิดตัวด้วย Visual Studio 2017 / สำหรับ. NET Core ซึ่งสามารถทำลายเครื่องมือ VS บางตัว (พื้นหลัง: ดูรายงานข้อผิดพลาด "Mono.Cecil ทำให้ OutOfMemoryException ด้วย. csproj PDB ใหม่" )

ไม่พบการทดสอบของคุณเนื่องจากรูปแบบพกพาใหม่.pdb(สัญลักษณ์ debug) หรือไม่

  • เปิดหน้าต่างผลลัพธ์
  • เปลี่ยนตัวเลือกแบบหล่นลงสำหรับแสดงผลลัพธ์จากเป็นแบบทดสอบทดสอบ
  • หากคุณเห็นผลลัพธ์ที่ต้องการดังต่อไปนี้ (อาจทำซ้ำหนึ่งครั้งสำหรับการทดสอบแต่ละครั้ง) แสดงว่าคุณมีปัญหาตามที่อธิบายไว้ในคำตอบนี้:

    Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod>
    Array dimensions exceeded supported range.

ถ้าใช่ให้ทำเช่นนี้เพื่อแก้ไขปัญหา:

  • เปิดคุณสมบัติของโครงการทดสอบของคุณ(เลือกโครงการทดสอบในโซลูชัน ExplorerและกดAlt+ Enter)
  • สลับไปที่Buildแท็บ
  • คลิกที่ขั้นสูง ... (อยู่ที่ส่วนท้ายสุดของหน้าแท็บนั้น)
  • ในแบบเลื่อนลงป้ายข้อมูลการแก้จุดบกพร่องให้เลือกnone, pdb-onlyหรือfullแต่ไม่ portableไม่เป็นการตั้งค่าล่าสุดนี้ที่ทำให้ไม่พบการทดสอบ
  • คลิกตกลงและล้างและสร้างโครงการของคุณใหม่ หากคุณต้องการความมั่นใจเป็นพิเศษให้ไปที่ไดเรกทอรีผลลัพธ์ของโครงการทดสอบและล้าง.pdbไฟล์ทั้งหมดก่อนที่จะสร้างใหม่ ตอนนี้การทดสอบของคุณควรกลับมา

1

เกิดขึ้นกับฉันเมื่อฉันลองเดินครั้งแรกกับ IntelliTest ใน VS 2017

บางครั้งเมื่อโครงการทดสอบได้รับการสร้างขึ้นโดยอัตโนมัติโดย IntelliTest แอสเซมบลีอ้างอิงถึงMicrosoft.ExtendedReflection( ... \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ MicrosoftExtendedReflection dll ) หายไป เมื่อเพิ่มแล้วการทดสอบที่สร้างขึ้นจะปรากฏใน test explorer หลังจากคอมไพล์ใหม่


1

ข้อจำกัดความรับผิดชอบ: มันไม่เกี่ยวกับ xunit กับ visual studio 2015 แต่ Visual Studio 2017 พร้อมแอปพลิเคชันทดสอบหน่วย UWP (MSTest) ฉันไปที่กระทู้นี้เพื่อค้นหาสิ่งเดียวกันดังนั้นบางทีคนอื่นจะทำอย่างเดียวกัน :)

ทางออกสำหรับฉันคือการอัพเดตแพ็คเกจ nuget สำหรับ MSTest.TestAdapter และ MSTest.TestFramework ดูเหมือนว่าเมื่อคุณสร้างแอปทดสอบหน่วยสำหรับ UWP คุณจะไม่ได้รับเวอร์ชันล่าสุดโดยอัตโนมัติ


ฉันขอแนะนำให้ถามคำถามที่ตอบตัวเองเพราะฉันเป็นวิธีที่ดีที่สุดในการแยกข้อมูลดังกล่าว - อย่าลังเลที่จะคัดลอกวางคำถามทั้งหมดของฉันและ s / xUnit / MSTest / ถ้าคุณคิดว่ามันสมเหตุสมผล)
Ruben Bartelink

1

ปัญหาของฉันได้รับการแก้ไขโดยการติดตั้ง nuget xunit.runner.visualstudio


1

ในกรณีของฉันฉันมีหลายโครงการทดสอบในโซลูชันเดียวกันและโครงการเดียวเท่านั้นที่ไม่แสดง "Test Explorer"

ฉันไปที่ "จัดการแพคเกจ Nuget สำหรับโซลูชัน" โดยคลิกขวาที่โซลูชัน

ฉันสังเกตเห็นภายใต้แท็บ "รวม" มีบางแพคเกจ nuget "ทดสอบ" ที่ไม่ซิงค์กันระหว่างโครงการ ฉันคลิกที่ "ติดตั้ง" และการทดสอบที่ขาดหายไปของฉันปรากฏขึ้น


1

ฉันลองใช้คำแนะนำส่วนใหญ่ด้านบนแล้วไม่มีอะไรทำงาน ในกรณีของฉันฉันอยู่ในทีมและมีการทดสอบปรากฏขึ้นสำหรับผู้พัฒนารายอื่นสำหรับโซลูชันเดียวกัน ดังนั้นฉันจึงพยายามลบโฟลเดอร์. vs ของฉัน แต่ก็ไม่มีโชคเช่นกัน

ฉันสิ้นสุดการลบโฟลเดอร์ในเครื่องของฉันทั้งหมดและคัดลอก repo ซ้ำอีกครั้ง ที่แก้ไขมันสำหรับฉัน


1

นี่คือทางออกที่ได้ผลสำหรับเรา ไม่ใช่สิ่งที่ดีที่สุด แต่อาจมีประโยชน์

พื้นหลัง:

  • สคริปต์ของเราได้รับการพัฒนาด้วย VS 2013 และใช้ NUnit VS Adapter 2.1
  • เมื่อเร็ว ๆ นี้เราย้ายไปยัง VS 2017 และเมื่อเปิดโซลูชันเดียวกัน - การทดสอบจะไม่แสดงใน Test Explorer

เมื่อสร้างเราจะเห็นข้อความนี้:

[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete

โซลูชัน (ชั่วคราว):

  • ถอนการติดตั้ง NUnit Adapter 3.10 ...
  • ติดตั้งอะแดปเตอร์ NUnit VS 2.1 ..

ตอนนี้การทดสอบจะปรากฏขึ้น


โปรดดึงคำถามใหม่ของคุณ (อย่างน้อยดูเหมือน) ไปยังโพสต์ของตัวเองเพื่อให้เป็นคำตอบที่ชัดเจน :)
35414

... ชื่อเรื่อง "ทำไม NUnit TestAdapter v3 ไม่เห็นการทดสอบ NUnit v2 ของฉัน? และ a) ping ที่นี่ b) ใส่" ดู <link> "ที่ด้านบน (แม้ว่าจะผอมบางเล็กน้อย) แต่ฉันต้องการ เช่นคำตอบนี้ถูกลบออกเนื่องจากมันไม่เหมาะสมกับxUnit v2 testsชื่อเรื่อง
Ruben Bartelink

0

ตรวจสอบด้วยว่าไฟล์ app.config ที่ว่างเปล่าอย่างสมบูรณ์ (ว่างเปล่าอย่างสมบูรณ์โดยไม่มีมาร์กอัป) อยู่ในโครงการทดสอบหรือไม่ นี่คือผู้ร้ายในกรณีของฉัน


0

ในกรณีของฉันฉันสร้าง "การกำหนดค่าโซลูชัน" ใหม่ตามที่แสดงในภาพ ดังนั้นเมื่อฉันเลือกแบบกำหนดเองของฉันเป็น "Prod" มันไม่รู้จัก TestMehods ด้วยเหตุผลบางอย่าง การเปลี่ยนกลับเป็น "ดีบั๊ก" ช่วยแก้ปัญหา

ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันไม่ทราบว่าคุณบางคนใช้ JustMock ด้วยหรือไม่ แต่ฉันต้องปิดการใช้งาน profiler ใน VS 2017 เพื่อให้การตรวจจับการทดสอบทำงานได้


อืมม หากคุณเปิดใหม่อีกครั้งมันจะล้มเหลวอีกครั้งทันทีหรือไม่
Ruben Bartelink

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