Visual Studio 2015 หรือ 2017 ไม่พบการทดสอบหน่วย


165

แก้ไข 2016-10-19:

คำถามเดิมเป็นเรื่องเกี่ยวกับปัญหาเฉพาะของ VS2015 CTP6 ที่มีตัวทดสอบ XUnit เห็นได้ชัดจากคำตอบที่ว่ามีปัญหาในวงกว้างมากขึ้นด้วยการค้นพบการทดสอบหน่วยใน Visual Studio ซึ่งอาจเกิดขึ้นในหลาย ๆ สถานการณ์ ฉันได้ล้างคำถามของฉันเพื่อสะท้อนว่า

ฉันได้รวมสคริปต์ไว้ในคำตอบของฉันเองที่ฉันยังคงใช้มาจนถึงทุกวันนี้เพื่อแก้ไขปัญหาที่คล้ายกันเมื่อปรากฏ

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


คำถามเดิม 2015-04-10:

ตั้งแต่เมื่อวาน, Visual Studio Test Explorer ของฉันจะไม่ค้นพบการทดสอบสำหรับโครงการใด ๆ ของฉัน มันไม่แสดงแถบโหลดสีเขียวหลังการสร้างเช่นกัน

เมื่อฉันไปที่ Visual Studio Test Explorer และคลิก "Run All" หรือเมื่อฉันคลิกขวาที่วิธีทดสอบและเลือก "Run Tests" ฉันได้รับสิ่งต่อไปนี้ในหน้าต่างแสดงผลของฉัน:

Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

ผมใช้ Visual Studio 2015 CTP 6 ใน Windows 10 Pro ดูตัวอย่างเทคนิคการสร้าง 10041. รุ่น .NET Framework ดูเหมือนจะไม่สำคัญ - มันเกิดขึ้นบน4.0, และ4.5.24.6

ฉันลองกับกรอบการทดสอบต่อไปนี้และพวกเขาทั้งหมดให้พฤติกรรมเดียวกัน:

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
  • xunit v2.1.0-beta1-build2945 กับ xunit.runner.visualstudio v2.1.0-beta1-build1051
  • NUnit v2.6.4 กับ NUnitTestAdapter v2.0.0

ฉันพบปัญหาใน GitHub (xunit) ที่ดูเหมือนจะคล้ายกัน: ไม่สามารถรับการทดสอบที่ค้นพบ # 295ด้วยความคิดเห็นนี้จากทีม xunit:

พึงระวังว่า Visual Studio 2015 CTP 5 ได้รับการรายงานว่ามีผู้ใช้จำนวนมากที่มีการทดสอบหน่วยทั่วไป (ไม่ใช่แค่ xUnit.net) ดังนั้นอย่าคาดหวังว่าจะใช้งานได้

นอกจากนี้โปรดตรวจสอบให้แน่ใจว่าคุณได้ล้างแคชนักวิ่งของ Visual Studio แล้ว หากได้รับความเสียหาย Visual Studio จะทำงานผิดปกติอย่างถาวรจนกว่าจะถูกลบ หากต้องการล้างแคชให้ปิดอินสแตนซ์ทั้งหมดของ Visual Studio จากนั้นลบโฟลเดอร์% TEMP% \ VisualStudioTestExplorerExtensions (โดยสุจริตมันอาจไม่เจ็บที่จะลบทุกอย่างใน% TEMP% ที่สามารถลบได้)

%TEMP%\VisualStudioTestExplorerExtensionsฉันพยายามที่ข้อเสนอแนะของพวกเขาที่จะลบโฟลเดอร์ น่าเสียดายที่ไม่ได้แก้ปัญหา

ผมสังเกตเห็นว่า ReSharper จริงคือสามารถค้นพบการทดสอบบางอย่าง ใช้งานได้กับการทดสอบ VS และ NUnit เท่านั้นไม่ใช่สำหรับ xunit

จะต้องมีโฟลเดอร์ temp หรือ cache บางประเภทที่ฉันต้องล้าง แต่ฉันรู้ว่า Visual Studio มีหลายตัวและไม่สามารถลบได้ทั้งหมดโดยไม่มีผลข้างเคียงที่ไม่ต้องการ


3
ฉันดีใจที่ฉันสะดุดกับสิ่งนี้มันทำให้ฉันนึกถึงสาเหตุที่ฉันใช้นักวิ่งทดสอบบุคคลที่ 3 (ในกรณีของฉัน ncrunch) ฉันเลิกกับ mstest มานานแล้วด้วยเหตุผลที่คล้ายกัน แน่นอนว่าไม่มีวิธีแก้ปัญหาหากคุณติดอยู่กับ MSTest ...
อาเบล


ด้วย VS 2017 เหลือเชื่อมาก ๆ การทำความสะอาดโฟลเดอร์ temp และ localappdata ของฉันที่เกี่ยวข้องกับ VS2017 การปิด + รีโหลด + โซลูชันที่สะอาดและการรีบูต Windows ไม่ได้ช่วยอะไร อย่างไรก็ตามน่าประหลาดใจที่โครงการ "ปลดโหลดซ้ำ" ของ simlpe ในโครงการทดสอบของฉันเพียงโครงการเดียวเท่านั้นที่ช่วยให้การค้นพบการทดสอบหยุดชะงัก ฉันไม่ได้ใช้แพ็คเกจทดสอบหน่วยของบุคคลที่สาม
Pac0

สำหรับ ppl บางอันอาจน่าสนใจหรือมีความเกี่ยวข้องมากกว่านี้ (ฉันไม่คิดว่าฉันควรจะเพิ่มคำตอบ): ไม่มีแหล่งที่มาใน Test Explorer - github.com/Microsoft/testfx/issues/274
hB0

นี่อาจเป็นการแก้ไขสำหรับบางคนstackoverflow.com/a/58019304/1566372
Rady

คำตอบ:


154

ด้วยความประหลาดใจของฉันการล้างไฟล์ temp ที่อยู่ใน%TEMP%ไดเรกทอรีช่วยแก้ปัญหาสำหรับฉัน

หมายเหตุ: เส้นทางนี้โดยทั่วไปเป็น C:\Users\(yourusername)\AppData\Local\Temp

เมื่อรวม @ Warren-P ไว้คุณสามารถนำทางไปยังโฟลเดอร์ temp โดยใส่ใน%temp%เมนู Start หรือเปิด "File Explorer" และเข้าไป%temp%ในแถบที่อยู่


30
หรือคุณเพียงแค่พิมพ์ใน %TEMP%เมนูเริ่มเรียกใช้และพบโฟลเดอร์ชั่วคราวสำหรับคุณโดยที่คุณไม่ต้องเดาค่าของอุณหภูมิ
Warren P

65
@ ZéCarlosแอปพลิเคชันใด ๆ ที่เก็บข้อมูลสำคัญใน%TEMP%ไดเรกทอรีควรหยุดทำงาน
Mark Pattison

25
ไม่ใช่เรื่องลำบากใจสำหรับคุณมันเป็นความล้มเหลวอย่างที่สุดจาก Microsoft ที่คุณต้องทำตามขั้นตอนที่ไร้สาระเช่นนั้นเพื่อให้ IDE IDE 1000+ USD ทำงานอยู่
MushyPeas

8
ทำงานให้ฉันใน VS2017 เช่นกัน!
Lorentz Vedeler

6
หากคุณกังวลเกี่ยวกับการล้างไดเรกทอรีชั่วคราวทั้งหมดการล้างเฉพาะไดเรกทอรีย่อย \ VisualStudioTestExplorerExtensions จะช่วยแก้ไขปัญหาได้
Mike Walsh

90

อาจเป็นไปได้ว่ารหัสของคุณถูกคอมไพล์ด้วย x64 ดังนั้นจึงต้องเปิดใช้งานสถาปัตยกรรมตัวประมวลผลเริ่มต้นเป็น X64

Test > Test Settings > Default Processor Architecture > X64

3
มันกัดฉันสองสามครั้ง แม้หลังจากหลายปีเหล่านี้ฉันยังคงไม่สามารถคิดเหตุผลที่ดีว่าทำไมโดยค่าเริ่มต้นการตั้งค่าการทดสอบจะไม่ถูกเลือกให้ตรงกับการกำหนดค่าการสร้างปัจจุบันของโครงการโดยอัตโนมัติ ดูเหมือนว่าจะมีการกำหนดค่าซ้ำ ๆ ให้ฉัน
Neutrino

1
การอัปเดตของ Windows และ / หรือการอัปเดต VS จะเปลี่ยนสถาปัตยกรรมเริ่มต้นโดยไม่บอกคุณ .... aaargh
rupweb

และ 4 ปีต่อมาสิ่งนี้ยังคงมีประโยชน์ ขอบคุณ
Oscar O.

67
  • ลองดูถ้าติดตั้งNUnit Test Adapter 2/3ใน VisualStudio
    (Tools>Extensions and Updates )

  • ตรวจสอบให้แน่ใจว่าได้เลือกสถาปัตยกรรมโปรเซสเซอร์ที่ถูกต้อง:
    (Test>Test Settings>Default Processor Architecture)


2
นี่คือสิ่งที่ได้ผลในที่สุดสำหรับฉัน หลังจากลองทุกอย่างอื่น
BradStell

ทำให้คุณรู้สึกเหมือนคนโง่ขุดในโฟลเดอร์ชั่วคราวก่อนเมื่อไม่มีการติดตั้งส่วนขยาย ขอขอบคุณที่โพสต์สิ่งนี้
NightOwl888

2
ตรวจสอบด้วยว่าคุณใช้ส่วนขยายที่ถูกต้องหรือไม่ มีสิ่งที่แยกต่างหากสำหรับ NUnit 2.x และ NUnit 3.x
pmbanka

1
เมื่อคุณกำหนดเป้าหมาย. NET Standard คุณจะต้องติดตั้งแพคเกจ NuGet NUnit Test Adapterแทนการใช้นามสกุล VSIX github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard
m93a

ลองรับ NUnit3TestAdapter จาก nuget แทน VSIX นั่นเป็นวิธีที่ดีกว่า
Ravella

33

แก้ไข 2016-10-19 (สคริปต์ PowerShell)

ปัญหานี้ยังคงกลับมาทุกขณะแล้ว ฉันเขียนตัวอย่าง PowerShell ขนาดเล็กเพื่อทำการล้างแคช / temp โฟลเดอร์ / ไฟล์ที่เกี่ยวข้องให้โดยอัตโนมัติ ฉันแบ่งปันที่นี่สำหรับผู้อ่านในอนาคต:

@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }

ตรวจสอบให้แน่ใจว่าได้ปิด Visual Studio ล่วงหน้าและเป็นความคิดที่ดีที่จะรีบูตในภายหลัง

การลบโฟลเดอร์ TEMP อาจไม่จำเป็นและในบางกรณีอาจไม่เป็นที่พึงปรารถนาดังนั้นฉันขอแนะนำให้ลองโดยไม่ต้องล้างโฟลเดอร์ TEMP ก่อน "$env:TEMP"เพียงแค่ละเว้น

คำตอบเดิม 2015-04-12

ปัญหาคือ "แก้ไข" หลังจากทำความสะอาดอย่างละเอียดของโฟลเดอร์ temp / cache ที่เกี่ยวข้องกับ Visual Studio

เนื่องจากฉันไม่มีเวลาที่จะผ่านทุกอย่างไปทีละตัวแล้วทดสอบในระหว่างนั้นฉันจึงไม่รู้ว่าอันไหนที่ทำให้เกิดปัญหา

นี่คือขั้นตอนที่แน่นอนที่ฉันได้ทำ:

  1. ปิด Visual Studio
  2. ใช้ CCleaner เพื่อล้างtempไฟล์ / โฟลเดอร์ระบบและเบราว์เซอร์
  3. ทำการล้าง / ลบไฟล์ / โฟลเดอร์ต่อไปนี้ด้วยตนเอง:

    • %USERPROFILE%\AppData\Local\assembly
    • %USERPROFILE%\AppData\Local\Microsoft\UnitTest
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
    • %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
    • %USERPROFILE%\AppData\Local\NuGet\Cache
    • %USERPROFILE%\AppData\Local\Temp

ขอบคุณทำงานให้ฉันหลังจากล้างโฟลเดอร์ Microsoft \ VisualStudio \ 14.0 \ และ Microsoft \ VisualStudio Services \ 6.0 \ Cache ที่คุณอธิบาย
Niels van Reijmersdal

คุณหมายถึง\Microsoft\VisualStudio\14.0\ImageLibrary\ImageLibrary.cacheอะไร
Mateen Ulhaq

2
ฉันมีทุกสิ่งที่ถูกนำออกจาก% TEMP% และมันไม่ได้ทำงาน แต่เมื่อฉัน readd ไดเรกทอรี 'VisualStudioTestExplorerExtensions' (ว่าง) ผลงานที่ดีที่สุดที่ everywhing :-) (มี anserw กับการแก้ปัญหาที่อยู่ด้านล่างในวันที่ปัจจุบัน)
nilphilus

ฉันต้องการยืนยันว่าโซลูชันนี้ใช้ได้กับฉันด้วย VS2015 Update 3 และ Resharper 10 แต่คุณต้องรีสตาร์ทเพื่อดูปาฏิหาริย์
Quoc Nguyen

1
ฉันลบหนึ่งไฟล์ \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFolderCache.xml เพียงไฟล์
Serhii Kuzmychov

21

เหตุผลข้อหนึ่งสำหรับปัญหานี้คือคลาสทดสอบของคุณไม่ได้เป็นแบบสาธารณะ MSTest ค้นพบการทดสอบจากคลาสสาธารณะเท่านั้น


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

วิธีนี้แก้ไขได้สำหรับฉัน โดยค่าเริ่มต้น Visual Studio เพิ่มคลาสการทดสอบโดยไม่มีคำสำคัญสาธารณะและจะไม่เห็นจนกว่าฉันจะทำให้เป็นสาธารณะ
Marc Fearby

13

ใน Visual Studio 2015 (อัปเดต 3) หากคุณต้องการแนบการทดสอบใน test explorer แล้วต้องติดตั้งNUnit Test Adapterดาวน์โหลดอะแดปเตอร์จากTools-> Extension and Updates-> แท็บออนไลน์ (คุณต้องค้นหาอะแดปเตอร์ ) โดยการเริ่มต้น Visual Studio ใหม่คุณสามารถเห็นการเปลี่ยนแปลงสำหรับกรอบการทดสอบ


2
ทำตามคำแนะนำของคุณฉันค้นหา "nunit" และพบ "NUnit 3 Test Adapter" ซึ่งหลังจาก "ดาวน์โหลด" (ติดตั้ง) แก้ไขปัญหาของฉัน การค้นหาอินเทอร์เน็ตสำหรับปัญหานี้พบบทความ SO อื่น ๆ ที่ลิงค์
Adam Cox

สิ่งนี้ดีกว่าตัวจัดการแพคเกจ Nuget ในบางสถานการณ์เนื่องจากไม่เปลี่ยนไฟล์
ปรับแต่ง

1
@GY_ แต่เมื่อคุณกำหนดเป้าหมายเป็น. NET Core หรือ Standard คุณต้องมีแพคเกจ NuGet จริงๆตรวจสอบคำตอบของฉันด้านล่าง: stackoverflow.com/a/47460221/1137334
m93a

คุณช่วยชีวิตฉันไว้! ขอบคุณฉันลองใช้วิธีแก้ปัญหามากมายและใช้งานไม่ได้ ฉันเป็นอะแดปเตอร์ทดสอบของ Google
Erman

9

ฉันไม่มีคำตอบที่สมบูรณ์ แต่ฉันได้พิจารณาบางสิ่งด้วยการเล่นกับโครงการทดสอบ:

  1. xunit.runner.aspnet : 2.0.0-aspnet-beta4ที่ปรากฏจะเป็นส่วนหนึ่งของการปล่อย Beta4 aspnet5 อย่างเป็นทางการไม่ได้ทำงานใน Visual Studio
  2. การใช้"xunit": "2.1.0-*"และ"xunit-runner.dnx": "2.1.0-*"แพ็คเกจจะทำงานใน Visual Studio แทน
  3. เพื่อให้ VS ค้นพบการทดสอบโปรเจ็กต์ของคุณต้องมีคำสั่ง SINGLE ชื่อ "test" ที่รัน "xunit.runner.dnx" การเพิ่มคำสั่งเพิ่มเติมอาจทำให้มันผิด
  4. หากหน้าต่าง Test Explorer ของคุณยังคงว่างเปล่าให้ลบคำสั่ง "test" จากโครงการของคุณจากนั้นสร้างโซลูชันขึ้นมาใหม่จากนั้นเพิ่มคำสั่ง "test" กลับไปที่ project.json
  5. การล้างแคชทั้งหมดของคุณตามคำแนะนำของ @ Fred-Kleuver อาจช่วยได้ แต่ฉันยังไม่ได้แยกขั้นตอนทั้งหมดดังนั้นฉันจึงไม่แน่ใจ

นี่เป็นปัจจุบันตาม VS 2015 CTP 6 โดยใช้รุ่นเบต้า 4 ไม่ใช่ฉบับรายวัน


1
โอเคฉันได้รับการยืนยัน (โดยให้เพื่อนร่วมงานลอง) ว่าการแก้ไขข้างต้นไม่จำเป็นต้องทำการล้างแคชหรือไฟล์ชั่วคราว
Avi Cherry

ข้างต้นกล่าวว่า "แทนการใช้" xunit ":" 2.1.0- "และ" xunit-runner.dnx ":" 2.1.0- "แพ็คเกจทำงานใน Visual Studio" งานนี้ขอบคุณ!
Gillardo

Btw ในฐานะผู้ติดตามทุกอย่างดูเหมือนว่าจะทำงานได้ดีใน VS 2015 ในปัจจุบัน ไม่ต้องวุ่นวายกับการได้รับการทดสอบใหม่เพื่อแสดงหรืออะไรก็ตาม
Avi Cherry

1
ในที่สุดก็มีอยู่ในขณะนี้เป็นคำแนะนำที่เหมาะสมจาก MS ในว่าที่รุ่นของ xUnit ไปใช้กับที่รุ่น DNX นี่: xunit.github.io/docs/getting-started-dnx.html
Avi เชอร์รี่

9

ฉันมีตัวอย่างที่การทดสอบบางอย่างจะไม่ถูกหยิบขึ้นมาเพราะฉันทำให้พวกเขาasyncเป็นดังนี้:

public async void This_IsMy_UnitTest()

ปัญหาคือฉันลืมที่จะทำให้พวกเขากลับมาTaskและไม่voidเมื่อฉันได้สลับไป ใครคิดว่าสิ่งนี้จะทำให้เกิดข้อผิดพลาดหรือการทดสอบล้มเหลว แต่ไม่ การทดสอบหน่วยในชั้นเรียนนั้นถูกเพิกเฉยอย่างเต็มที่และทำตัวเหมือนไม่มีอยู่จริง

หลังจากนั้นประมาณ 3 ครั้งก็ไม่ได้ทำความสะอาดและสร้าง + เริ่มใหม่VS.NETที่ฉันเห็นการทดสอบการทำงานและล้มเหลวแสดงว่าฉันลืมเพิ่มTaskประเภทการคืนสินค้า:

public async Task This_IsMy_UnitTest()

หลังจากการอัพเดตพบการทดสอบหน่วยและทำงานอย่างถูกต้อง นี่อาจเป็นกรณีที่มีขอบ แต่การasyncทดสอบการใช้awaitภายใน แต่ไม่มีลายเซ็นที่ถูกต้องอาจทำให้เกิดปัญหาเดียวกันนี้และไม่ใช่ครั้งแรกที่ฉันทำสิ่งนี้


แก้ไขปัญหาให้ฉัน!
Aimal Khan

8

ไปที่ Nuget package manager และดาวน์โหลด Nunit Adapter ดังต่อไปนี้

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


ขอบคุณในกรณีของฉันฉันมี NUnitTestAdapter แทน NUnit3TestAdapter นั่นช่วยแก้ไขปัญหาของฉัน
พิกเซล

การเพิ่มแพ็กเกจ NUnit3TestAdapter nuget ให้กับโซลูชันหรือโครงการจะไม่แก้ไขปัญหาสำหรับโซลูชันอื่น ๆ ทั้งหมดโดยทั่วไป แต่เฉพาะสำหรับโซลูชันที่เพิ่มเข้ามา เพื่อที่จะทำมันโดยทั่วไปสำหรับทุกการแก้ปัญหา / projs เพิ่มส่วนขยาย NUnit 3 ทดสอบอะแดปเตอร์ที่สตูดิโอภาพของคุณตามที่อธิบายไว้ในstackoverflow.com/a/45748818/1300390
อูตัน

6

ฉันมี pronlem เดียวกัน แต่โฟลเดอร์ "% TEMP% \ VisualStudioTestExplorerExtensions" ไม่มีอยู่ในเครื่องของฉันดังนั้นเมื่อฉันอ่านบทความที่ฉันมีความคิดในการสร้างและใช้งานได้ ตอนนี้นักสำรวจทดสอบสามารถแสดงการทดสอบทั้งหมดของฉันได้แล้ว ขอบคุณ


6

เพิ่งเริ่มต้น Visual Studio และใน Explorer ทดสอบทำ "เรียกใช้ทั้งหมด" ... การทดสอบทั้งหมดของฉันถูกค้นพบแล้ว


1
ฉันสังเกตเห็นว่าเพิ่งปิด Test Explorer แล้วเปิดใหม่อีกครั้งและเลือก Run All ก็ได้เช่นกัน ฉันยังไม่แน่ใจว่ามันใช้งานได้ดีหรือไม่ แต่มันได้ผลในครั้งนี้
รวย

5

ในกรณีของฉัน (Visual Studio Enterprise 2015 14.0.25425.01 อัปเดต 3, Resharper 2016.2) ฉันแค่ต้องทำโซลูชันที่สะอาดจากเมนู Build การสร้างโซลูชันขึ้นใหม่จากนั้นให้ผู้ทดสอบทำการ "ปลุก" และค้นหาการทดสอบทั้งหมดอีกครั้ง


5

วิธีแก้ปัญหาในกรณีของฉันคือเพียงติดตั้งส่วนขยายNUnit 3 Test Adapterไปยัง Visual Studio 2015 ของฉัน

'ส่วนขยายและการปรับปรุง' มีอยู่ภายใต้ 'เครื่องมือ'


คำตอบของคุณเพิ่มคุณค่าให้กับคำถามอย่างไร คุณอ่านมาแล้วเหรอ? มีคำตอบสองข้อที่แนะนำวิธีแก้ปัญหาแบบเดียวกันนี้แล้ว: stackoverflow.com/a/41364951/6305294 , stackoverflow.com/a/35043380/6305294
อเล็กซ์

2
ดีฉันอ่านอันแรก (เช่น stackoverflow.com/a/41364951/6305294) แต่นั่นแตกต่างจากคำตอบของฉันเพราะแนะนำให้เพิ่มแพ็กเกจ nuget Adapter NUnit ไปยังโซลูชันหรือโครงการซึ่งจะไม่แก้ไขปัญหา ปัญหาสำหรับการแก้ปัญหาอื่น ๆ โดยทั่วไป เกี่ยวกับคนที่สองฉันต้องยอมรับว่าฉันพลาดที่จะเห็นมัน บางทีการเพิ่มภาพหน้าจอช่วยให้ตาดูเมื่อมีสองคำตอบมากมายที่นำเสนอให้กับคำถาม
Umar T.

4

ในกรณีของฉันปัญหาคือ "ระหว่างเก้าอี้กับคีย์บอร์ด" ฉันเปลี่ยนไปใช้การกำหนดค่าในเครื่องมือจัดการการกำหนดค่าซึ่งไม่รวมถึงโครงการทดสอบหน่วยของฉันในการสร้าง การสลับกลับไปเป็นการกำหนดค่า (เช่น Debug) ซึ่งรวมถึงโครงการทั้งหมดที่แก้ไขปัญหา


4

ในกรณีของฉัน MSTest ภายใต้ VS 2015 ไม่สนใจการทดสอบด้วยชื่อ test (ie method) ที่มีความยาวมากกว่า 174 ตัวอักษร การย่อชื่ออนุญาตให้มองเห็นการทดสอบได้ สิ่งนี้ถูกกำหนดผ่านการเดาและตรวจสอบโดยใช้ชื่อการทดสอบ


4

สิ่งนี้อาจไม่ช่วยคนส่วนใหญ่ แต่มีคนที่ไม่มีประสบการณ์ในการทดสอบหน่วยเขียนวิธีการทดสอบที่ส่งคืนboolแทนที่จะเป็นvoid:

[TestMethod]
public bool TestSomething()

การเปลี่ยนประเภทส่งคืนเพื่อvoidแก้ไขปัญหา


ยังน่าสนใจที่จะรู้ว่าการคืนประเภทป้องกันการค้นพบการทดสอบฉันไม่ทราบ
Fred Kleuver

3

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

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


3

ฉันแค่อยากจะเพิ่มว่าฉันพบทางออกที่แตกต่างอย่างสิ้นเชิงกับคนข้างต้น

ฉันได้ประกาศคลาสทดสอบของฉันดังนี้:

[TestClass]
class ClassificationTests
{
   //unit tests
}

ทันทีที่ฉันเพิ่มโมดิpublicฟายเออร์ในคลาสมันก็ทำงานได้ตามที่คาดไว้!


2

หากคุณกำลังกำหนดเป้าหมาย .NET มาตรฐานหรือ .NET หลักที่คุณต้องใช้แพคเกจ NuGetสำหรับ NUnit ทดสอบ Adapter และไม่ได้นามสกุล

ขอแนะนำให้ติดตั้งอะแดปเตอร์จาก NuGet หากคุณกำลังทดสอบโครงการ. NET Core หรือ. NET Standard อะแด็ปเตอร์ VSIX ไม่รองรับและจะไม่รองรับ. NET Core เนื่องจากแพ็คเกจ VSIX ไม่สามารถกำหนดเป้าหมายหลายแพลตฟอร์มได้

ที่มา: NUnit GitHub Wiki

.

ตรวจสอบคำถามที่พบบ่อยที่นั่น:

การทดสอบของฉันไม่ปรากฏใน Visual Studio 2017

  • คุณใช้แพ็คเกจ NuGet หรือไม่?
  • คุณใช้เวอร์ชั่น 3.8.0 หรือใหม่กว่าของแพ็คเกจ NuGet หรือไม่
  • การทดสอบของคุณกำหนดเป้าหมายเป็น. NET Core หรือ. NET Framework แบบเต็มหรือไม่ (ดูด้านบน)
  • คุณได้เพิ่มการอ้างอิงแพ็คเกจไปยัง Microsoft.NET.Test.Sdk หรือไม่
  • คุณเริ่ม Visual Studio ใหม่หรือไม่ มันยังคงเป็นอารมณ์แปรปรวนเล็กน้อย

ที่มา: NUnit GitHub Wiki


2

เรื่องนี้เกิดขึ้นกับผมเพราะโครงการการทดสอบของฉันมี app.configมันถูกเพิ่มโดยอัตโนมัติโดยแพ็คเกจ NuGet สำหรับการเปลี่ยนเส้นทางการชุมนุม แต่ดูเหมือนการทดสอบของฉันจะทำงานได้ดีหากไม่มี

ดู: https://developercommunity.visualstudio.com/comments/42858/view.html


1

ผมมีปัญหาเหมือนกัน. ฉันเพิ่งทำความสะอาดและสร้างโครงการขึ้นมาใหม่และฉันสามารถเห็นการทดสอบที่ขาดหายไป


1

เปิดในเพื่อแชร์โซลูชันของฉัน ฉันใช้ Windows 10, Visual Studio 2015, NUnit 3.5, NUnit Test Adapter 3.6 (ผ่าน NuGet ไม่ใช่นามสกุล VISX) และไม่มีการค้นพบการทดสอบของฉัน ปัญหาของฉันคือว่าในโครงการทดสอบการแก้ปัญหาของฉันทางลัดไปยังโฟลเดอร์ "เอกสาร" ของฉันได้ถูกสร้างขึ้นภายในโฟลเดอร์โครงการ ฉันเดาว่าอะแดปเตอร์ทดสอบกำลังเห็นทางลัดและพยายามวางสายเพื่อลองคิดดูว่าจะทำอย่างไรกับมันทำให้เกิดความล้มเหลวในการแสดงการทดสอบหน่วย


1

การลบไฟล์ \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFold‌ erCache.xml แก้ปัญหาให้ฉันแล้ว


1

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

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


1

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

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


1

ฉันแก้ไขมันโดยเปลี่ยน X64 เป็น: คลิกขวาที่โครงการ -> คุณสมบัติ -> สร้าง -> เป้าหมายแพลตฟอร์ม -> CPU ใด ๆ


1

อย่างใดโครงการของฉันถูกกำหนดให้รวบรวมเป็นห้องสมุดแบบคงที่ (.LIB) หลังจากเปลี่ยนสิ่งนี้เป็นDynamic Library (.dll)ทดสอบสถานที่ที่ Visual Studio 2012 ค้นพบอย่างถูกต้อง

My Unit Test Project ->
Properties ->
Configuration Properties ->
General ->
Configuration Type

1

มันง่ายมากที่ฉันจะแก้ไขปัญหาโดย:

  • เลือกโครงการทดสอบหน่วยของคุณ
  • คลิกที่ปุ่ม 'แสดงไฟล์ทั้งหมด' ในโซลูชัน Explorer และไฟล์ชั่วคราวใหม่ปรากฏขึ้นในโครงสร้างไฟล์ของโซลูชัน Explorer ภายใน 'obj \ x86 \ Debug'
  • ลบไฟล์ชั่วคราวเหล่านี้และสร้างโครงการใหม่
  • ลองใช้การทดสอบและใช้งานได้!

1

เรามีปัญหาเดียวกัน เรามีโซลูชัน VS ที่ยิ่งใหญ่พร้อมโครงการ C # หลายโครงการและโครงการทดสอบเพิ่มเติม

การค้นพบการทดสอบของ Resharper นั้นใช้งานได้ดี แต่ VS Test Explorer ล้มเหลวอย่างน่าสังเวช

ปรากฎว่าโครงการไม่ได้มี MsTest TestFramework และ TestAdapter รุ่นเดียวกันและบางครั้งพวกเขาใช้ NuGets และการอ้างอิงเก่าที่ดีครั้งอื่นและไม่ได้รับการสนับสนุนอย่างชัดเจน (มากสำหรับ IDE ที่มีราคาแพงเช่นนี้)

การลบการอ้างอิง Microsoft.VisualStudio.Test * ทั้งหมดจากนั้นเพิ่ม / อัปเดต MSTest NuGets สองตัวเพื่อแก้ไขปัญหา


1

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

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