การทดสอบไม่ทำงานใน Test Explorer


147

ฉันกำลังดำเนินการแก้ปัญหาที่มีอยู่ 32 Unittests ฉันทำงานร่วมกับนักวิ่งทดสอบ resharper - ซึ่งทำงานได้ดี การทดสอบทั้งหมดกำลังดำเนินการทดสอบทั้งหมดแสดงผลการทดสอบที่ถูกต้อง ตอนนี้เพื่อนร่วมงานบอกฉันว่าการทดสอบไม่ได้ทำงานบนเครื่องของเขาโดยใช้ Visual Studio test explorer พวกเขาไม่ทำงานบนเครื่องของฉันดังนั้นฉันจึงสามารถยกเว้นไฟล์ที่หายไปในเครื่องหรือบางอย่างได้

Test Explorer แสดงการทดสอบหน่วยทั้งหมด แต่เมื่อคลิกที่ "Run All" การทดสอบทั้งหมดจะกลายเป็นสีเทาและไม่แสดงผลการทดสอบ:

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

  • ชั้นเรียนทดสอบทั้งหมดเป็นแบบสาธารณะ
  • ชั้นเรียนทดสอบทั้งหมดมีการ[TestClass]ประกาศแอตทริบิวต์
  • วิธีการทดสอบทั้งหมดใช้[TestMethod]แอตทริบิวต์
  • ทั้งรหัสผลผลิตและโครงการทดสอบกำหนดเป้าหมายเป็น. NET 3.5
  • ฉันได้พยายามแล้วที่จะทำความสะอาดสร้างวิธีการแก้ปัญหาของฉันและ / หรือลบทั้งหมดobj, bin, DebugและReleaseโฟลเดอร์

ฉันจะเข้าใจคำแนะนำใด ๆ ที่อาจทำให้เกิดพฤติกรรมดังกล่าว


3
อัปเดต ReSharper ของคุณ อ้างถึงstackoverflow.com/questions/16011775/…
kmhigashioka

18
จะดีไหมถ้า VS บอกว่าทำไมถึงทดสอบไม่ได้? แพลตฟอร์มเป้าหมายไม่ตรงกัน, ไม่มีอะแดปเตอร์ทดสอบ, ... :(
Bernhard Hofmann

1
มีการกล่าวถึงที่ไหนว่าพวกเขาใช้ ReSharper?
Alex 75

6
@BernhardHofmann ฉันพบปัญหาเช่นนี้ในขณะนี้และปรากฎว่า VS กำลังคายข้อความแสดงข้อผิดพลาดบางอย่างในการทดสอบผลลัพธ์> สำคัญ. น่าผิดหวังที่ VS ไม่ได้ทำให้พวกเขามองเห็นได้ชัดเจนขึ้น แต่นั่นเป็นสถานที่ที่จะมองในสถานการณ์เช่นนี้
JLRishe

2
คุณทุกคนอาจสนใจที่จะโหวตคำขอคุณสมบัตินี้: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

คำตอบ:


159

หากโครงการของคุณไม่ใช่ AnyCpu ทั้งหมดคุณอาจต้องการตรวจสอบว่าการตั้งค่า 2 รายการต่อไปนี้ตรงกันหรือไม่:

  1. [คลิกขวาที่โครงการทดสอบ] -> คุณสมบัติ -> สร้าง -> เป้าหมายแพลตฟอร์ม - เช่น x64

  2. [Main Menu] -> Test -> Test Settings -> Default Processor Architecture -> X64

ฉันพบว่าเมื่อสิ่งเหล่านี้ไม่ตรงกับโครงการทดสอบของฉันจะล้มเหลวในการรันโดยไม่โต้ตอบ


6
คำตอบนี้คือคอและคอพร้อมกับ "เปิดและปิดอีกครั้ง" ดังนั้นหากวิธีนี้ได้ผลสำหรับคุณโปรดเพิ่มคะแนน
lukkea

อันนี้แก้ไขปัญหาของฉัน (เปลี่ยนจากแพลตฟอร์มผสมเป็น anycpu)
Marcel Studer

1
ตรวจสอบให้แน่ใจว่าโครงการทดสอบของคุณไม่ใช่ netstandard2.0 แต่ netcoreapp2.2
user2033412

4
ทำงาน ฉันกับ VS จริงๆคุณจะรู้คำเตือนที่ชัดเจนหรือข้อความแสดงข้อผิดพลาดหรืออะไรบางอย่าง
anon

9
เวอร์ชัน VS2019: เมนูหลัก -> ทดสอบ -> สถาปัตยกรรมโปรเซสเซอร์สำหรับโครงการ AnyCPU -> X64
StackOverthrow

65

ฉันมีปัญหาเดียวกันใน VS 2017 ในกรณีของฉันมันแก้ไขได้โดยการรีสตาร์ท VS


7
ความคิดเห็นก่อนหน้านี้ของฉันเกี่ยวกับสาเหตุที่ฉันให้การโหวตลดลงนี้ถูกลบดังนั้นฉันจะอธิบายให้ชัดเจนขึ้นเล็กน้อย นี่ไม่ใช่วิธีแก้ปัญหา เป็นการแก้ไขชั่วคราวที่ไม่สามารถแก้ปัญหาพื้นฐานได้ ฉันไม่คิดว่า SO ควรเป็นสถานที่ที่ผู้คนควรจะมาบอกว่า "ปิดแล้วเปิดใหม่" นั่นคือความรู้ที่ต้องเรียนรู้ก่อนที่คุณจะมาที่นี่ โปรดดูคำตอบของ Joseph Simpson สำหรับวิธีแก้ปัญหา
lukkea

5
@lukkea ฉันติดตามคำตอบของโจเซฟซิมป์สันและยืนยันว่าโครงการทั้งหมดของฉันที่ AnyCpu ฉันยังคงพบปัญหาที่อธิบายไว้ที่นี่ สำหรับฉันเพียงแค่รีสตาร์ท VS ช่วย นั่นไม่ใช่ครั้งแรกที่ VS2012 มีฮิคอัพประเภทนี้ (ไม่ใช่เฉพาะในเครื่องของฉัน) ฉันเห็นด้วยกับคุณว่านี่ไม่ใช่วิธีแก้ปัญหาที่ดี แต่ถ้าไม่มีอะไรผิดปกติในโครงการนั่นอาจเป็นวิธีเดียวที่ช่วยได้ ควรตรวจสอบว่าการทำความสะอาดการสร้างใหม่ไม่ได้ช่วยอะไรเช่นกัน
Sascha

2
หากเพียงแค่ 'เปิดและปิดอีกครั้ง' จะแก้ไขปัญหาทั้งหมดของฉันได้ ยังคงแปลกใจว่ามีกี่ข้อที่แก้ไขได้ มันน่าอายเล็กน้อยที่ฉันต้องไปที่ stackoverflow เพื่อถูกเตือนให้ทำ แต่ฉันพบว่าคำตอบนี้มีประโยชน์
Richard Garside

2
@lukka บางครั้งวิชวลสตูดิโอเป็นปัญหาพื้นฐานและการรีสตาร์ทเป็นวิธีแก้ปัญหา
JSON

1
ยังใช้ได้กับ VS2019 ....
Tronald

46

หากคุณใช้ NUnit มากกว่า MSTest คุณจะต้องใช้NUnit Test Adapter Extensionสำหรับ Visual Studio 2012/2013


9
สิ่งนี้ช่วยให้ฉันคิดได้ว่าฉันจำเป็นต้องติดตั้ง "NUnit 3 Test Adapter": marketplace.visualstudio.com/…
Westerlund.io

11
ใน VS 2019 ทำงานให้ฉันติดตั้งอะแดปเตอร์จากตัวจัดการแพ็คเกจnuget.org/packages/NUnit3TestAdapter
maylon

ตามหน้านี้คุณต้องติดตั้งMicrosoft.NET.Test.Sdkจาก Nuget
BlueRaja - Danny Pflughoeft

ใน VS 2017 ฉันติดตั้ง Extension Nunit 3 Test Adapter และใช้งานได้
Bob Lokerse

1
ใน VS 2019 ฉันยังติดตั้ง Extension Nunit 3 Test Adapter และใช้งานได้ หมายเหตุหนึ่ง: ฉันต้องอัปเดต Visual Studio ด้วย
Bob Lokerse

43

ฉันต้องเปลี่ยนวิธีทดสอบ async เพื่อส่งคืนงานแทนที่จะเป็นโมฆะ

จากนั้นการทดสอบจะแอ็คทีฟและรันได้ใน Test Explorer


1
ไม่มีวิธีใดที่จะรอให้เมธอด async void เสร็จสิ้น Async void คือ "fire and forget" นั่นเป็นเหตุผลที่พวกเขาไม่สามารถทดสอบได้
Ketobomb

ใบหน้าที่ฉันทำเมื่ออ่านสิ่งนี้สะท้อนไปทั่วแผ่นดิน ... ขอบคุณที่ชี้ให้เห็นความโง่เขลาของฉัน ที่ได้ผลสำหรับฉัน Upvoted
JP Chapleau

แม้ว่าจะยื่นภายใต้หมวดหมู่ "no duh" ก็ตาม ฉันหวังว่าสิ่งนี้จะได้รับการโหวตมากขึ้นเนื่องจากเห็นได้ชัดว่าประเภทการส่งคืนของคุณต้องเป็นงาน แต่ง่ายต่อการลืม (เพราะดูเหมือนจะไม่มีการทดสอบหน่วยอื่นใดในโลกที่ส่งคืนอะไรเลยนอกจากเป็นโมฆะ) และส่งคุณลงหลุมกระต่ายในการแก้ไขหน่วยของคุณ ทดสอบการกำหนดค่าเมื่อไม่มีปัญหาการกำหนดค่าจริง หวังเป็นอย่างยิ่งว่าสิ่งนี้จะทำให้เกิดคอมไพเลอร์หรืออย่างน้อยที่สุดก็เกิดข้อผิดพลาดรันไทม์
pat8719

2
@ pat8719 ดูเหมือนจะเป็นความคิดที่ดีสำหรับตัววิเคราะห์โค้ด พวกเขาไม่ยากเกินไปที่จะเขียน ฉันเพิ่งเขียนข้อเท็จจริงเกี่ยวกับ xunit async void Foo()และนักวิเคราะห์ของพวกเขาไม่บ่น แต่พวกเขาสามารถเพิ่มได้อย่างแน่นอน cc: @bradwilson
benmccallum

22

ตรวจสอบว่ามีการเขียนกรอบการทดสอบใดบ้าง (เช่น nunit, xunit, VS test เป็นต้น) และตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งอะแดปเตอร์ / ส่วนขยายสำหรับทดสอบที่ถูกต้องแล้ว

สำหรับฉันมันเป็น NUnit 3 Test Adapter ที่ขาดหายไปและฉันยืนยันหมายเลขเวอร์ชันที่ต้องการโดยดูที่เวอร์ชันการอ้างอิง nunit.framework (เลือก. dll ในแผนผังการอ้างอิงในโซลูชัน Explorer และกด F4 เพื่อเปิดหน้าต่างคุณสมบัติ)


2
หมายเหตุถึงตนเอง: อ้างอิง MSTest proj เดิมของฉันMicrosoft.VisualStudio.QualityTools.UnitTestFramework(ไม่แน่ใจว่าเวอร์ชันใด) แก้ไขปัญหาที่เมธอดไม่ทำงาน (หรือพบ) โดยการลบการอ้างอิงนั้นและติดตั้ง MSTest.TestAdapter (และ Framework) ล่าสุด (v2.1.0)
Adam Cox

@AdamCox Microsoft.VisualStudio.TestTools.UnitTestingเลิกใช้แล้ว? ฉันมีการทดสอบบางอย่างโดยใช้สิ่งนี้ซึ่งกะทันหันก็ออกจากการทำงานข้างต้นหลังจากเพิ่มการอ้างอิงบางส่วนไปยังโครงการที่พวกเขาขึ้นอยู่
ebyrob

@ebyrob คำตอบของ Athanasios ด้านล่างอาจเกี่ยวข้อง ดูเหมือนว่าเขาไม่เพียงต้องอัปเกรด / อัปเกรดเป็นแพ็คเกจ MSTest. * เท่านั้น แต่ยังเพิ่มการอ้างอิงบางอย่างและแก้ไขการเปลี่ยนเส้นทางการผูกบางอย่าง ตรวจสอบผลลัพธ์คำเตือนของคุณ
benmccallum

16

TLDR: อัปเดตแพ็คเกจการทดสอบดูในผลลัพธ์ -> คอนโซลทดสอบ

ฉันต่อสู้กับเรื่องนี้มาครึ่งวันแล้ว นี่คือสิ่งที่ฉันทำเพื่อแก้ปัญหา:

อาการ

  1. 5 โครงการทดสอบหน่วยทั้งหมดที่ค้นพบได้ใน TestExplorer
  2. 2 ใน 5 ดำเนินการอย่างถูกต้อง
  3. 3 ระบุว่าไม่ทำงานเลย
  4. ปัญหาเริ่มต้นหลังจากการอัปเดต. net framework

ตรวจสอบ

เนื่องจากแพคเกจทั้งหมดได้รับการอัปเดตในระหว่างการอัปเดต. net framework ฉันจึงเริ่มต้นด้วยความแตกต่างระหว่างโปรเจ็กต์ workin และไม่ทำงาน เบาะแสแรกคือทั้ง 3 โครงการใช้: MSTest.TestAdapterและMSTest.TestFramework

โดยปกติแล้วฉันไปที่ -> คอนโซลเอาต์พุต -> แบบเลื่อนลงทดสอบในVS 2019และดูผลลัพธ์ ไม่มีอะไรเป็นประโยชน์ที่นั่น

ขั้นตอนที่หนึ่งของการแก้ปัญหา : อัปเดตMSTest.TestAdapterและMSTest.TestFrameworkเป็นเวอร์ชัน2.0.0

ขั้นตอนที่สองของการแก้ปัญหา : ตอนนี้คอนโซลเอาต์พุต -> เอาต์พุตแบบหล่นลงทดสอบเริ่มแสดงทีละรายการแพ็คเกจที่ขาดหายไปและการเปลี่ยนเส้นทางการผูกที่ไม่ถูกต้อง

ขั้นตอนที่สามของการแก้ปัญหา : เพิ่มแพ็คเกจที่ขาดหายไปด้วยตนเอง สำหรับฉันนั่นคือ

  1. System.Runtime.Extentions
  2. System.Reflection
  3. อาจจะมากกว่านั้นที่ฉันหายไป

ขั้นตอนที่ 4 ของการแก้ปัญหา : ลบ / แก้ไขการเปลี่ยนเส้นทางการผูกที่ไม่จำเป็น

ฉันหวังว่านี่จะช่วยคนอื่นได้


คุณช่วยฉันในวันนั้นครึ่งหนึ่ง! ฉันอัปเกรดโครงการเวอร์ชัน 4.5 FW และพยายามลบสิ่งที่ไม่จำเป็นทั้งหมดออกจากแพ็คเกจและลงเอยในสถานการณ์นี้ ขอบคุณ!
Numan

ฉันคิดว่าฉันกำลังเจออะไรบางอย่างที่คล้ายกัน ในที่สุดฉันก็สร้างโครงการใหม่ตั้งแต่ต้น เห็นได้ชัดว่ามีบรรทัดในไฟล์ * .csproj ที่ตั้งค่าToolsVersionและการกระแทกของฉันทำให้ทุกอย่างยุ่งเหยิง ทั้งหมดที่ฉันสามารถพูดได้คือ "ผู้ซื้อระวัง" สำหรับการทดสอบหน่วย MS และพร้อมที่จะแทนที่ไฟล์ * .csproj ของคุณทันทีที่สังเกตเห็นสิ่งนี้รวมเข้าด้วยกันอย่างแน่นหนาและขึ้นอยู่กับเวอร์ชันมาก
ebyrob

ขอบคุณในขณะที่ไม่ใช่ปัญหาของฉันโดยตรงเคล็ดลับในการตรวจสอบเอาต์พุตคอนโซลแสดงให้ฉันเห็นข้อผิดพลาด (เมธอด DBContext Dispose มีข้อผิดพลาด) ที่ทำให้การทดสอบของฉันไม่ทำงาน
Iain Carlin


11

ฉันมีปัญหานี้และสำหรับฉันมันเกิดจากการมีโครงการทดสอบหลายโครงการที่มีเวอร์ชันต่างกัน:

  • MSTest.TestAdapter
  • MSTest.TestFramework

การรวมแพ็กเกจ nuget สำหรับโครงการดังนั้นพวกเขาจึงเหมือนกันช่วยแก้ปัญหาให้ฉันได้


1
คำตอบนี้ช่วยให้ฉันพบสาเหตุที่คล้ายกัน ในกรณีของฉันบางโครงการทดสอบมีการอ้างอิงถึง Microsoft.VisualStudio.TestPlatform.TestFramework (และไม่ได้ทำงาน) ในขณะที่โครงการอื่น ๆ มีการอ้างอิงถึง Microsoft.VisualStudio.QualaityTools.UnitTestFramework (ซึ่งเป็นโครงการที่จะทำงาน)
จูเนียร์

11

มีปัญหาเดียวกันหลังจากติดตั้ง VS 2019 ใหม่ทั้งหมดพบการทดสอบ แต่ไม่ทำงานโดย "เกิดข้อผิดพลาดที่ไม่คาดคิด" แก้ไขโดยการตั้งค่า x64 แทน x86 ซึ่งถูกเลือกโดยค่าเริ่มต้น

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


4
นี่คือการแก้ไขสำหรับฉันพร้อมกับรีสตาร์ท VS และลบโฟลเดอร์. vs ขอบคุณ.
โดนัลด์บันทึก

ฉันไม่อยากจะเชื่อเลยว่านี่ยังคงเป็นปัญหาอยู่ ... หวังว่า Microsoft จะมีคำเตือนบางอย่างสำหรับอุปสรรค์คลาสสิกนั้นในตอนหนึ่ง
Guillaume LaHaye

10

ฉันพบว่าในโปรเจ็กต์นั้นไม่ได้อ้างอิงแอสเซมบลีMicrosoft.VisualStudio.QualityTools.UnitTestFramework แต่มันถูกอ้างอิงMicrosoft.VisualStudio.TestPlatform.TestFrameworkและMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions เมื่อฉันลบการอ้างอิงทั้งสองนั้นออกและเพิ่มการอ้างอิงไปยังการประกอบMicrosoft.VisualStudio.QualityTools.UnitTestFrameworkการทดสอบที่เคยทำเครื่องหมายด้วยเครื่องหมายอัศเจรีย์สีน้ำเงินก่อนหน้านี้ก็เริ่มทำงานและเริ่มทำงานทันที

การทดสอบหน่วยไม่ทำงานด้วยการประกอบที่ไม่ถูกต้อง

ด้วยการประกอบที่ถูกต้องการทดสอบจะทำงาน


3
หลังจากเปลี่ยนจาก. NET Framework 4.6.2 เป็น. NET Framework 4.7.2 การทดสอบของฉันไม่ทำงานอีกต่อไป หลังจากพยายามมาหลายชั่วโมงมีเพียงโซลูชันนี้เท่านั้นที่ใช้ได้ผลสำหรับฉัน
Éric Bergeron

หลังจากเปลี่ยนจาก. NET Framework 4.6.2 เป็น. NET Framework 4.7.2 - ฉันต้องลบการเปลี่ยนเส้นทางการผูกทั้งหมดใน app.config
bkwdesign

8

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

ปัญหาได้รับการแก้ไขโดยการติดตั้งแพ็คเกจเหล่านั้นในโครงการทดสอบที่ขาดหายไป


ในกรณีของฉันมันตรงกันข้ามแน่นอน: โครงการทดสอบหน่วยใด ๆ ที่มีแพ็คเกจ MSTest nuget จะไม่ทำงานเหมือนที่คนอื่นทำ แปลก.
Palle Due

แก้ไข : ฉันมีไฟล์. testettings แพ็คเกจ MSTest ต้องการไฟล์. runsettings นั่นเป็นสาเหตุที่การทดสอบไม่ทำงาน
Palle Due


7

ติดตั้งNunit3TestAdapterNuget ได้แก้ปัญหานี้แล้ว


สิ่งนี้ช่วยแก้ปัญหาของฉันได้เช่นกัน! :)
เออ

6

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

การตั้งค่าสถาปัตยกรรมโปรเซสเซอร์สำหรับโครงการ AnyCPU ใน Test Explorer ช่วยแก้ปัญหาของฉันได้! ดูภาพหน้าจอด้านบน


ขอบคุณมาก! มันช่วยฉันได้ =)
Alexander Brattsev

4

ในกรณีของฉันฉันมีasync voidวิธีการและฉันแทนที่ด้วยasync Taskดังนั้นการทดสอบจึงเป็นไปตามที่ฉันคาดไว้:

    [TestMethod]
    public async  void SendTest(){}

แทนที่ด้วย:

    [TestMethod]
    public async  Task SendTest(){}

1
นี่คือปัญหาของฉัน
Kyle Delaney

3

ฉันมีอาการเดียวกัน

โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนขยาย Visual Studio ที่เหมาะสมผ่านทาง Tools - Extensions and Updates ในกรณีของฉันฉันต้องติดตั้ง XUnit และ Specflow จากตัวเลือก Online

จากนั้นทำความสะอาดสารละลายและสร้างใหม่

หากยังไม่ได้ผลให้ล้างไดเรกทอรี temp ของคุณ (ค้นหา% temp% ในการค้นหาเมนู Start และลบเนื้อหาทั้งหมดใน Temp)

จากนั้นลองถอนการติดตั้ง Resharper ในที่สุดก็แก้ปัญหาของฉันได้


4
ถอนการติดตั้ง Resharper ?! ฉันไม่คิดว่านี่เป็นวิธีแก้ปัญหา ^^
Steve Rakebrandt

3

คุณสามารถดูผลลัพธ์ข้อผิดพลาดของนักวิ่งทดสอบของคุณได้โดยเปิดแผงผลลัพธ์ (มุมมอง -> ผลลัพธ์) และเลือก "การทดสอบ" จากรายการแบบเลื่อนลง "แสดงผลลัพธ์จาก"

แสดงผลลัพธ์จาก


นอกจากนี้หากคุณติดตั้ง Resharper แล้วคุณสามารถเปิดไฟล์ทดสอบและวางเมาส์เหนือวงกลมทดสอบถัดจากการทดสอบเพื่อรับข้อมูลข้อผิดพลาดเพิ่มเติม

เอาต์พุต Resharper

คลิกเพื่อไปยังหน้าต่างที่มีข้อมูลรายละเอียดเพิ่มเติม หรือคุณสามารถเปิดหน้าต่างนั้นได้โดยไปที่ Extensions -> Reshaper -> Windows -> Unit Test Exploration Results

การสำรวจทดสอบหน่วย Resharper


2

นี่คือโครงการทดสอบไม่ได้ถูกทำเครื่องหมายว่าจะสร้าง:

สร้าง -> เครื่องมือจัดการการกำหนดค่า ... -> ตรวจสอบการสร้างสำหรับโครงการทดสอบของคุณ


2

เนื่องจากฉันมาถึงที่นี่ด้วยข้อผิดพลาดประเภทนี้ฉันจึงโพสต์ปัญหา / วิธีแก้ปัญหาของฉัน:

อาการ:

  • ไม่ใช่การทดสอบทั้งหมดที่ทำงาน แต่ไม่ได้ขึ้นอยู่กับโครงการมีเพียงบางส่วนเท่านั้นที่ดำเนินการ
  • ผู้ถูกประหารชีวิตทั้งหมดเป็นสีเขียว
  • Tech stack: dotnet core / XUnit / FluentAssertions
  • การทดสอบทั้งหมดตรวจพบและอัปเดตหากมีการเปลี่ยนแปลง
  • โดยการเลือกหรือเรียกใช้ "การทดสอบที่ไม่ได้รัน" หลาย ๆ ครั้งจะสามารถดำเนินการได้

ปัญหา:

มีข้อผิดพลาดในรหัสที่ทำให้เกิดข้อยกเว้นภายในเธรดอื่น การยืนยันการทดสอบทั้งหมดผ่าน แต่ยกเลิกการดำเนินการทดสอบ ฉันเห็นข้อผิดพลาดใน "ผลลัพธ์การทดสอบ" (NullException)


+1 ฉันพยายามแก้ไขข้อบกพร่องของการทดสอบเฉพาะ ในที่สุดเมื่อฉันทำการทดสอบอื่นที่ง่ายกว่าฉันก็สามารถดีบักการทดสอบเฉพาะได้ คำตอบนี้ทำให้ฉันลองทำดู
Halvard

2

มีอาการเดียวกันในกรณีของฉันมันเป็นเวอร์ชัน dotnet core SDKที่เป็นปัญหา

โครงการมีเป้าหมาย 2.2 และสามารถสร้างโดยใช้ 3.0 หลังจากติดตั้ง 2.2 SDK เวอร์ชันล่าสุดพวกเขาก็สามารถเรียกใช้งานได้


2

ปัญหานี้จะสังเกตได้เช่นกันเมื่อวิธีการทดสอบที่กำลังเรียกใช้พ่นStackOverflowExceptionทำให้ผู้ทดสอบยกเลิกการรันการทดสอบส่งผลให้ผลลัพธ์0 tests runมา

ในการค้นหาผู้ร้ายและแก้ปัญหาให้วางจุดพักไว้ที่จุดเริ่มต้นของวิธีการตกแต่งทั้งTestInitializeและTestMethodให้รันการทดสอบหน่วยในโหมดดีบักดำเนินการตามขั้นตอน (F10) จนกว่าจะมีข้อยกเว้น


2

ลองใช้ตัวเลือกมากมายกับ Visual Studio 2019 เวอร์ชัน 16.4.6 และ Microsoft.VisualStudio.TestTools.UnitTestingตอนนี้วิธีเดียวที่จะรันการทดสอบได้สำเร็จคือการเรียกใช้คำสั่งถัดไปในคอนโซล

dotnet test

การทดสอบถูกค้นพบใน Test Explorer แต่ผลลัพธ์คือ "ไม่ทำงาน"

การอัปเดต Visual Studio ไม่ได้ช่วย

ได้แก้ไขปัญหา "ไม่มีการทดสอบที่ตรงกับตัวกรอง FullyQualifiedName ที่ระบุ" โดยเรียกใช้การอัปเดตเป็นเวอร์ชันล่าสุดสำหรับแพ็กเกจถัดไป:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

วิธีแก้ปัญหาสำหรับฉันคือเปลี่ยนการตั้งค่าการทดสอบหน่วย Resharper "สถาปัตยกรรมแพลตฟอร์มเริ่มต้น" เป็น "x64"

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


สิ่งนี้ช่วยแก้ปัญหาของฉันกับโครงการ. NET Core 3.1 ที่ปฏิเสธที่จะดำเนินการทดสอบใน Test Explorer ไม่มีอะไรจะแก้ไขได้นอกจากนี้
J_L

1

สำหรับฉันการรีสตาร์ท VS2017 ไม่ได้ผล ฉันต้องล้าง sln จากนั้นพบไฟล์ที่มีการทดสอบที่ไม่ทำงานและเรียกใช้ไฟล์นั้นเท่านั้น หลังจากนั้นฉันก็ทำงานทั้งหมดและทำงานได้ตามปกติอีกครั้ง


1

ฉันมีแพ็คเกจ NUnit (3.11.0) และ NunitTestAdapter (3.12.0) ที่แตกต่างกัน เมื่อฉันอัปเดต NUnit เป็น 3.12.0 Visual Studio จะทำการทดสอบ


1

ในกรณีของฉันมันใช้งานได้เพื่ออัปเดตแพ็คเกจ MSTest nuget สามารถสร้างปัญหานี้ซ้ำได้แม้ในโครงการ MSTest เปล่าและการอัปเดตแพ็คเกจใช้งานได้


1

สำหรับฉันการมีคุณสมบัติที่เรียกว่า TestContext ในคลาสพื้นฐานทำให้เกิดพฤติกรรมนี้ ตัวอย่างเช่น:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

ฉันสามารถบอกได้จากคุณลักษณะของคุณว่าคุณกำลังใช้ MSTest ฉันมีปัญหาที่คล้ายกัน: การทดสอบของฉันปรากฏใน Test Explorer แต่เมื่อฉันพยายามเรียกใช้ (โดยเลือกเรียกใช้ทั้งหมดหรือเลือกทีละรายการ) จะไม่ทำ

ปัญหาของฉันคือฉันสร้างโครงการทดสอบหน่วยด้วยตนเองจากโครงการ. NET Standard Class Library ที่ว่างเปล่า ฉันได้ติดตั้งMSTest.TestFrameworkแพ็คเกจ NuGet แล้ว แต่ไม่ใช่ไฟล์MSTest.TestAdapterแพ็คเกจ ทันทีที่ฉันติดตั้งแพ็คเกจอะแดปเตอร์พวกมันก็ทำงานตามที่คาดไว้

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


1

เป็นมูลค่าการกล่าวขวัญว่าบางครั้งไฟล์ NUnit Test Adapter ได้รับความเสียหายในโฟลเดอร์ผู้ใช้ C: \ Users [User] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll บน Windows 10 และ ที่ทำให้ Test Explorer หยุดทำงานตามที่ควร


1

ฉันใช้ VS2019 กับ. Net 4.7 ฉันติดตั้ง NUnit extension v3 และเปลี่ยนการตั้งค่าการทดสอบเพื่อใช้ X64 โครงการทดสอบหน่วยของฉันคือ CPU ใด ๆ (จะใช้งานได้ถ้าฉันเปลี่ยนเป็น x64) ตอนนี้ฉันสามารถดีบักผ่านรหัสของฉันได้แล้ว

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