เหตุใด visual studio 2012 จึงไม่พบแบบทดสอบของฉัน


221

ฉันมีการทดสอบบางอย่างที่ใช้งานในตัวMicrosoft.VisualStudio.TestTools.UnitTestingแต่ไม่สามารถทดสอบได้

ฉันใช้ visual studio 2012 ultimate

ฉันมีทางออกของสองโครงการ หนึ่งมีการทดสอบusing Microsoft.VisualStudio.TestTools.UnitTesting, [TestClass]ก่อนที่จะเรียน [TestMethod]ก่อนวิธีการทดสอบและการอ้างอิงMicrosoft.VisualStudio.QualityTools.UnitTestFramework(รุ่น 10.0.0.0, รุ่นรันไทม์ v2.0.50727) ฉันลองใช้ dot-net framework 3.5, 4 และ 4.5 ​​แล้วมีข้อผิดพลาดในการกำหนดเป้าหมายใหม่

ฉันพยายามสร้างโซลูชันและโครงการ นักสำรวจทดสอบมีข้อความ 'สร้างโซลูชันของคุณเพื่อค้นหาการทดสอบที่มีอยู่ทั้งหมด คลิก "เรียกใช้ทั้งหมด" เพื่อสร้างค้นหาและเรียกใช้การทดสอบทั้งหมดในโซลูชันของคุณ

ดังนั้นคำถามคือฉันจะหา visual studio เพื่อทดสอบได้อย่างไร


ได้ลองทำตามเช่นนี้: http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspxแต่ไม่ประสบความสำเร็จ: ฉันติดอยู่ในส่วนเริ่มต้นเมื่อถูกถามถึง create testsคลิกขวาและเลือก create testsไม่มี


ฉันมีการทดสอบนี้ (มันรวบรวม แต่ไม่ปรากฏใน test explorer):

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

ตอนนี้ฉันได้ค้นพบแล้ว (ดูคำตอบที่ถูกลบด้านล่าง) ว่าเป็นเพราะมันอยู่ในไดรฟ์ที่ใช้ร่วมกัน แต่ฉันยังไม่ทราบวิธีการแก้ไข (บางอย่างเกี่ยวกับการตั้งค่าความปลอดภัยอาจจะ)


เวอร์ชันใด VS 2012 คุณสามารถดาวน์โหลดนักวิ่งทดสอบเช่น TestDriven.Net หรือมีหนึ่งใน Resharper
Brett Allred

ฉันใช้ visual studio 2012 ultimate
ctrl-alt-delor

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

5
ในกรณีของฉันการลบไฟล์ app.config แก้ไขการทดสอบหน่วยสำรวจ
Chris Richner

4
ลองค้นหาข้อผิดพลาดในหมวดหมู่ 'ทดสอบ' ในหน้าต่างผลลัพธ์ ฉันสร้างการทดสอบการใช้งานจาก build build และเมื่อฉันพยายามดีบักโดยใช้ debug build (ซึ่ง dll ตั้งอยู่ในโครงสร้างโฟลเดอร์อื่น) ฉันไม่ได้รับข้อผิดพลาด build ใด ๆ แต่ต้องดูภายใต้การทดสอบจากเมนูแบบดึงลง เมื่อฉันแก้ไขแล้วการทดสอบจะเริ่มปรากฏใน Test Explorer
gDexter42

คำตอบ:


227

ฉันมีอาการเดียวกัน แต่ภายใต้สถานการณ์ที่แตกต่างกัน

ฉันต้องเพิ่มอีกหนึ่งขั้นตอนในโซลูชันของ Peter Lamberg - ทำความสะอาดโซลูชัน / โครงการของคุณ

โครงการที่ไม่ได้ใช้เป้าหมายของฉันคือ x64 เมื่อฉันสร้างโครงการเดิมมีการกำหนดเป้าหมายที่ x86

หลังจากเปลี่ยนเป็น x64 การทดสอบหน่วยทั้งหมดของฉันหายไป

ฉันต้องไปที่เมนูทดสอบ -> การทดสอบการตั้งค่า - สถาปัตยกรรมตัวประมวลผลเริ่มต้น -> x64

พวกเขายังไม่ปรากฏตัว

ได้สร้าง

ยังไม่ปรากฏขึ้น

ในที่สุดก็ทำความสะอาด

จากนั้นพวกเขาก็ปรากฏตัวขึ้น

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


ในขณะที่ทำความสะอาดบางครั้งก็ช่วยได้ แต่ก็ไม่เป็นปัญหา ฉันมีปัญหากับโครงการบนไดรฟ์เครือข่าย และความจริงที่ว่า build ช่วยเคยเป็นเพียงอาการของเครื่องมือสร้าง buggy
ctrl-alt-delor

7
ว้าว! ดูเหมือนว่า "Clean Solution" จะใช้งานได้จริง (ต่างจากการสร้างใหม่ทั้งหมด) ฉันคิดว่านี่เป็นการหยุดแฮ็คที่มีประโยชน์ใน Visual Studio 6.0!
เดฟ

"สะอาด" ไม่ทำงานสำหรับเพื่อนร่วมงานของฉันที่มีปัญหานี้ มันใช้งานได้สำหรับเธอหลังจากลบซอร์สโค้ดทั้งหมดจากเวิร์กสเปซ TFS ของเธอและรับล่าสุด (w / เขียนทับ) จากนั้นก็ใช้งานได้ดี!
Michael R

2
นี่มันสำหรับฉัน ในโซลูชันที่มี x86, CPU ใด ๆ , x64 ซึ่งไม่พบการทดสอบโครงการหนึ่ง ฉันทำความสะอาดโซลูชันเปลี่ยนสถาปัตยกรรมเริ่มต้นของการตั้งค่าการทดสอบและสร้างใหม่จากนั้นทุกอย่างจะเห็นได้ มันไม่สมเหตุสมผลเลยเนื่องจากการเปลี่ยนแปลงสถาปัตยกรรมที่ค้นพบการทดสอบที่รวบรวมภายใต้สถาปัตยกรรม CPU ที่แตกต่างกัน
Ben H

2
เมื่อฉันเปลี่ยนโปรเซสเซอร์เริ่มต้น - การทดสอบทั้งหมดของฉันแสดงให้เห็น ขอบคุณมากสำหรับสิ่งนี้!
Dan But

160

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

namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

24
มันสำหรับฉันเกือบอายฉันไม่พบออกบน :) ของตัวเอง
Landi

5
ฉันมีปัญหานี้เช่นกันฉันเกิดจาก[TestMethod]ความไม่แน่นอนเนื่องจากการคัดลอกวางรหัสอื่น ๆ
Seph

2
@Seph: ฉัน[TestMethod]คงที่เพราะนั่นคือสิ่งที่UserTest1.csในโครงการทดสอบใหม่มี! แก้ไขปัญหาของฉันด้วย
Andre Luus

4
อย่าวางไว้staticข้างหน้าวิธีการของคุณ ฉันไม่รู้ว่าทำไมฉันถึงทำแบบนั้นจนติดนิสัย
levininja

1
สิ่งนี้ทำเพื่อฉันแล้วน่าสนใจว่าคุณจะเสียเวลามากกับบางสิ่งที่ควรจะชัดเจน ขอบคุณสำหรับคำตอบ Joe King
Thulani Chivandikwa

58

บางครั้งก็ใช้งานได้

ตรวจสอบว่าสถาปัตยกรรมโปรเซสเซอร์ภายใต้เมนูทดสอบตรงกับสถาปัตยกรรมที่คุณใช้ในการสร้างโซลูชัน

การทดสอบ -> การตั้งค่าการทดสอบ -> สถาปัตยกรรมตัวประมวลผลเริ่มต้น -> x86 / x64

ตามที่กล่าวไว้ในโพสต์อื่น ๆ ตรวจสอบให้แน่ใจว่าคุณเปิดหน้าต่างทดสอบ Explorer ทดสอบ -> Windows -> ทดสอบ Explorer

จากนั้นการสร้างโครงการใหม่ด้วยการทดสอบควรทำให้การทดสอบปรากฏใน Test Explorer

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

ช่องทำเครื่องหมาย "สร้าง" ไม่ถูกแก้ไขในเครื่องมือจัดการการกำหนดค่าสำหรับโครงการทดสอบใหม่ที่ฉันสร้างขึ้นภายใต้โซลูชัน

ไปที่ Build -> เครื่องมือจัดการการกำหนดค่า ตรวจสอบให้แน่ใจว่าโครงการทดสอบของคุณมีการสร้างเช็คบ็อกซ์สำหรับการกำหนดค่าโซลูชันและแพลตฟอร์มโซลูชันทั้งหมด


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

ไม่มีโปรเซสเซอร์เช่น x64 แต่สิ่งที่ฉันไมโครซอฟท์ใช้คำนี้สำหรับ x86-64 / amd64 / x86e นอกจากนี้ยังไม่มี x86 เพียงตระกูล x86 x ย่อมาจากสิ่งที่ไม่รู้จักดังนั้นสมาชิกของตระกูล x64 จะเป็น 164, 264, 364 …หรือเป็น x86 ตัวประมวลผล 86 บิต
ctrl-alt-delor

ขอบคุณสำหรับคำตอบของคุณมันช่วยฉันได้ (ฉันเปลี่ยนจาก x86 builds เป็น x64 builds)
enguerran

แม้แต่ใน VS 2015 ที่เปิดหน้าต่าง Test Explorer ทำงาน ดีใจที่ฉันยังสามารถเรียกใช้การทดสอบจากบรรทัดคำสั่ง
ไบรอัน

32

ฉันมี Visual Studio 2012 และฉันไม่เห็นการทดสอบใน Test Explorer

ดังนั้นฉันติดตั้งต่อไปนี้: NUnit Test Adapter

ที่แก้ไขปัญหาสำหรับฉัน!


1
นอกจากนี้ยังมีให้บริการผ่าน NuGetInstall-Package NUnitTestAdapter
Darren Hale

ขอบคุณ @ DarrenHale ในขณะที่ค้นหาแพ็คเกจนี้ใน NuGet ฉันก็พบชุดรวมที่เรียกว่าNUnit TestAdapter รวมถึง NUnit 2.6.4 Frameworkด้วย
เรย์

18

จากประสบการณ์ที่ผ่านมาทั้งหมดข้างต้นไม่ได้ผล วิธีทดสอบของฉัน

public async void ListCaseReplace() { ... }

ไม่แสดงขึ้น แต่รวบรวมได้ดี เมื่อฉันลบasyncคำหลักการทดสอบปรากฏขึ้นในการทดสอบ Explorer นี่เป็นเพราะasync voidเป็นวิธีการ 'ไฟและลืม' ทำวิธีการasync Taskและคุณจะได้รับการทดสอบกลับ!

นอกจากนี้การไม่มีการกำหนดค่าโครงการทดสอบเป็น "สร้าง" จะป้องกันไม่ให้การทดสอบปรากฏขึ้น เครื่องมือจัดการการกำหนดค่า> ตรวจสอบการทดสอบของคุณเพื่อสร้าง


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

12

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

เพื่อให้ VS.NET สามารถโหลดสิ่งต่าง ๆ ของเครือข่ายที่แชร์ต้องเพิ่ม (ใช้ร่วมกัน) ไปยังตำแหน่งที่เชื่อถือได้ ในการเพิ่มสถานที่ลงในรายการที่เชื่อถือได้แบบเต็ม ๆ (เห็นได้ชัดว่าต้องแก้ไขตามสภาพแวดล้อมของคุณ)

 caspol -m -ag 1.2 -url file:///H:/* FullTrust

หากต้องการตรวจสอบหรือแสดงรายการตำแหน่งที่เชื่อถือได้ที่มีอยู่ให้รัน:

 caspol -lg

คำตอบนี้ไม่ได้รับการยืนยันโดยผู้ถามเนื่องจากฉันไม่มีความสนใจในคำตอบอีกต่อไป หากมันเหมาะกับคุณ (หรือไม่) ให้เพิ่มความคิดเห็นด้านล่าง
ctrl-alt-delor

6
@richard คุณยอมรับคำตอบคุณไม่ได้ยืนยันและลดคำตอบอื่น ๆ ที่อธิบายถึงวิธีการแก้ปัญหาที่แตกต่างกันใช่หรือไม่ ....แปลกแฮะ, แปลกนะ, มันแปลก ๆ นะ!
เตฟานบาวเออร์

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

1
CasPol.exe%windir%\Microsoft.NET\Framework[64]\[version]สามารถพบได้ใน ตรวจสอบว่าคุณกำลังตั้งค่านโยบายสำหรับสถาปัตยกรรมที่เหมาะสม ที่มา: msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.100%29.aspx
EpicVoyage

นี่เป็นปัญหาสำหรับฉันด้วย น่ารำคาญมากที่ VS ไม่รับพวกเขา แต่ไม่มีข้อบ่งชี้เกี่ยวกับสาเหตุ!
kaybee99

10

ปัญหาที่ฉันพบคือการทดสอบไม่พบใน Test Explorer (ไม่มีสิ่งใดปรากฏขึ้น) หากวิธีการแก้ปัญหาทำงานอยู่นอกไดรฟ์เครือข่าย / ตำแหน่งเครือข่าย / ไดรฟ์ที่ใช้ร่วมกัน

คุณสามารถแก้ไขได้โดยการเพิ่มตัวแปรสภาพแวดล้อม

COMPLUS_LoadFromRemoteSources และตั้งค่าเป็น 1


6

ฉันมีปัญหาเดียวกัน .. ในกรณีของฉันมันเกิดจากทรัพย์สินส่วนตัว TestContextทรัพย์สินส่วนตัว

เปลี่ยนเป็นความช่วยเหลือต่อไปนี้:

public TestContext TestContext
{
    get;
    set;
}

หลังจากทำความสะอาดและสร้างโซลูชัน (ดังที่อธิบายไว้ในคำตอบของ @Ourjamie) วิธีทดสอบในคลาสทดสอบที่ได้รับผลกระทบจะมีอยู่ใน Test Explorer


ตกลงอาการเดียวกันดังนั้นจะลบการโหวตถ้าคุณระบุสิ่งที่คุณเปลี่ยนแปลง (จากอะไร)
ctrl-alt-delor

1
ฉันมีเหมือนกันทุกอย่างฉันติดตามกระทู้ทั้งหมดจากนั้นมาที่นี่และพาฉันไปที่ความคิดเพื่อเผยแพร่สู่สาธารณะ bingo: การทดสอบใหม่ของฉันปรากฏขึ้น ฉันเข้าใจความคิดเห็นก่อนหน้านี้ แต่ ... เนื่องจากสิ่งนี้นำเราจาก Google ... นี่เป็นเธรดที่จะอ่านเมื่อการทดสอบไม่ปรากฏขึ้น
edelwater

1
นี่คือสาเหตุของปัญหาของฉัน ฉันมีฟิลด์สำหรับอินเตอร์เฟสการพึ่งพาเป็นฟิลด์ส่วนตัว คุณเป็นผู้ช่วยชีวิต!
Alex

6

ฉันพบปัญหาเดียวกันในขณะที่พยายามเปิดโซลูชันบนเครือข่ายที่ใช้ร่วมกัน จะไม่มีการทดสอบการทดสอบหน่วยโดย Test Explorer ในกรณีนี้ การแก้ปัญหากลายเป็น:

แผงควบคุม -> ตัวเลือกอินเทอร์เน็ต -> แท็บ "ความปลอดภัย" -> คลิก "อินทราเน็ต" และเพิ่มที่อยู่ IP ของเซิร์ฟเวอร์หรือชื่อโฮสต์ที่ถือเครือข่ายที่ใช้ร่วมกันในรายการ "ไซต์"

หลังจากทำสิ่งนี้ฉันได้รวบรวมโซลูชันใหม่และตอนนี้การทดสอบก็ปรากฏขึ้น นี่ควรจะคล้ายกับคำตอบของ @BigT


6

รายการตรวจสอบด่วนสำหรับการแก้ปัญหาการทดสอบทั่วไป ทำให้เเน่นอน:

  1. คลาสทดสอบและวิธีทดสอบคือ public
  2. ชั้นทดสอบมี [TestClass]คุณสมบัติ
  3. วิธีทดสอบมี[TestMethod]คุณสมบัติ

หากวิธีนี้ไม่ได้ผลให้ลองทำความสะอาดสร้างโซลูชันขึ้นมาใหม่และเริ่มต้น Visual Studio ใหม่


วิธีนี้จะแก้ไขปัญหาของผู้เข้าชมส่วนใหญ่สำหรับคำถามนี้และสรุปคำตอบส่วนใหญ่ แต่ไม่ครอบคลุมถึงปัญหาในคำถาม
ctrl-alt-delor

1
ขอบคุณ. UTA001: TestClass attribute defined on non-public class
Jarek Przygódzki

6

ฉันได้รับข้อผิดพลาด: "Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."

ลองเรียกใช้ Visual Studio ในฐานะผู้ดูแล ที่ทำงานให้ฉัน

มีโพสต์ Stack Overflow อีกอันที่พูดถึงข้อผิดพลาดนี้และวิธีแก้ปัญหาแบบเดียวกันก็ใช้ได้สำหรับพวกเขา คำถามยังคงว่าทำไมงานนี้


3
ทำงานให้ฉันด้วย! ฉันคิดว่านี่เป็นปัญหาแยกต่างหาก
Justin Morgan

2
เฮ้คนนี้ทำงานได้ ขอบคุณมาก .. วิธีแก้ปัญหาใด ๆ ที่ทำให้มันทำงานโดยไม่ต้องทำงานในฐานะผู้ดูแลระบบ?
Sriram Sakthivel

2
ขออภัยฉันไม่คิดว่าการทำงานในฐานะผู้ดูแลระบบเป็นวิธีแก้ปัญหาที่ดี เว้นแต่จะมีหลักฐานว่านี่เป็นหนทางเดียวเท่านั้น
ctrl-alt-delor

การทำงานในฐานะผู้ดูแลระบบมักไม่ใช่ปัญหาใหญ่ แต่หนึ่งในปัญหาคือคุณไม่สามารถส่ง Workitem ไปยัง Outlook
Edward Olamisan

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

4

บางครั้งฉันก็มีอาการเหมือนกัน

สิ่งที่ฉันทำคือ:
1. ปิดหน้าต่างทดสอบ Explorer
2. ทำความสะอาดโซลูชัน
3. สร้างโซลูชันขึ้น
ใหม่ 4. เปิดหน้าต่างทดสอบ Explorer อีกครั้งจากการทดสอบ -> Windows -> ทดสอบ Explorer

และฉันได้รับการทดสอบในหน้าต่าง Test Explorer


ฉันไม่คิดว่านี่เป็นปัญหาเดียวกัน
ctrl-alt-delor

3
ฉันคิดว่ามันเป็นปัญหาเดียวกันมันเกิดจากสิ่งอื่น
เตฟานบาวเออร์

2

จากแถบเมนูด้านบน ...

ทดสอบ -> เรียกใช้ -> การทดสอบทั้งหมด

คุณสามารถดูการทดสอบทั้งหมดจาก Test Explorer (Test -> Windows -> Test Explorer)

เพิ่มเติมกับ VS 2012 หากคุณพลาดอะไรลองค้นหาโดยใช้แถบเปิดใช้ด่วนด้านบนขวา (Ctrl + Q) "ทดสอบ"

หวังว่านี่จะช่วยได้


ฉันลองสิ่งนั้นทั้งสองทำงานร่วมกับ nunit แต่ครั้งนี้ฉันพยายามที่จะทำการทดสอบของคนอื่นโดยใช้Microsoft.VisualStudio.TestTools.UnitTestingความคิดอะไรที่ฉันทำผิด?
ctrl-alt-delor

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

2
ฉันแค่ต้องการให้แน่ใจว่าคุณกำลังใช้รุ่นด่วนหรือที่ไม่มีเครื่องมือทดสอบ คุณได้ลองติดตั้งชุดทดสอบบุคคลที่สามแล้วหรือยัง
Brett Allred

2

ฉันพบวิธีที่ดีที่สุดในการแก้ไขปัญหานี้คือการสร้างไฟล์. proj msbuild และเพิ่มโครงการทดสอบหน่วยที่คุณมีปัญหาในไฟล์นี้และดำเนินการทดสอบโดยใช้เวอร์ชันบรรทัดคำสั่งของ mstest ฉันพบปัญหาการกำหนดค่าเล็ก ๆ ใน app.config ซึ่งปรากฏเฉพาะเมื่อเรียกใช้การทดสอบจาก mstest - ไม่เช่นนั้นโครงการทดสอบที่สร้างขึ้นก็ใช้ได้ นอกจากนี้คุณจะพบปัญหาการอ้างอิงทางอ้อมด้วยวิธีนี้เช่นกัน เมื่อคุณสามารถรันการทดสอบหน่วยจากบรรทัดคำสั่งโดยใช้ mstest จากนั้นคุณสามารถทำโซลูชันที่สะอาดได้สร้างโซลูชันใหม่และการทดสอบของคุณควรจะถูกค้นพบอย่างถูกต้อง


ในกรณีของฉัน app.config ยังฆ่าการปรากฏของการทดสอบหน่วย หลังจากลบ app.config และสร้างโครงการทดสอบขึ้นใหม่ในที่สุดพวกเขาก็กลับมาแล้ว!
Chris Richner

2

ในกรณีของฉันมันเป็นอย่างอื่น ฉันติดตั้งแพคเกจแล้วถอนการติดตั้งและติดตั้งเวอร์ชันก่อนหน้าอีกครั้ง ที่เหลือการconfiguration/runtime/asssemblyBinding/dependencyIdentityเปลี่ยนเส้นทางที่เหลือใน app.config ของฉัน ฉันต้องแก้ไขมัน ฉันคิดออกโดยดูที่Outputหน้าต่างและเลือก " Tests" ในเมนูแบบเลื่อนลง ข้อความแสดงข้อผิดพลาดอยู่ที่นั่น นี่เป็นความเจ็บปวด ... ฉันหวังว่ามันจะช่วยคนอื่นได้


2

นี่เป็นมากกว่าการช่วยเหลือผู้ที่จบลงที่นี่แทนที่จะตอบคำถามของ OP:

ลองปิดและเปิดสตูดิโอภาพใหม่ทำเคล็ดลับสำหรับฉัน

หวังว่านี่จะช่วยใครซักคน


2

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


2

ฉันประสบปัญหานี้หลายครั้งเมื่อฉันพยายามสร้างโซลูชันในพีซีเครื่องอื่น

ฉันใช้ NUnit และ Specflow ด้วย โดยค่าเริ่มต้นโครงการทดสอบของฉันมีเป้าหมายที่ X86 แต่ฉันต้องเปลี่ยนเป็น X64 ขั้นตอนคือ 1. เมนูทดสอบ -> การตั้งค่าการทดสอบ - สถาปัตยกรรมตัวประมวลผลเริ่มต้น -> x64 2. Clean Build 3. Build 4. ถ้าการทดสอบยังไม่ปรากฏขึ้น 5. ไปที่เครื่องมือส่วนขยายและอัปเดตจากนั้นติดตั้งไลบรารี NUnit และ Specflow 6. ล้างข้อมูลบิลด์ 7. สร้าง

จากนั้นโดยปกติการทดสอบจะปรากฏในตัวแก้ไขการทดสอบ


@srebella ดีที่คุณแก้ไขปัญหานี้ ฉันใช้เวลาหลายวันเพื่อแก้ไขปัญหานี้ กรุณาแบ่งปันประสบการณ์ของคุณกับชุมชน กรุณาใส่คำตอบนี้ไปด้านบนถ้าคุณเชื่อว่ามันใช้งานได้ ขอบคุณ :-)
Shiran Jayawardena

1

ฉันอัปเดต VS 2012 เป็นอัปเดตล่าสุดแล้ว เช่นการอัปเดต Visual Studio 3. นั่นแก้ไขปัญหาสำหรับฉัน


1

สำหรับฉันการแก้ปัญหามีความซับซ้อนน้อยกว่าเล็กน้อย

ฉันเพิ่งนำโซลูชันที่มีอยู่ไปยังเครื่องของฉัน (โคลนจาก gitHub) และเราไม่ได้ติดตามไฟล์. cs ที่สร้างขึ้นอัตโนมัติที่ Visual Studio สร้างขึ้น (สำหรับไฟล์คุณลักษณะแต่ละไฟล์จะมีไฟล์. cs ที่มีชื่อเหมือนกัน)

การเปิดโซลูชันโดยไม่ต้องใช้ไฟล์. cs ที่เกี่ยวข้องทำให้ฉันสามารถนำทางไปยังวิธีที่ถูกผูกไว้ได้ดังนั้นจึงดูเหมือนว่า specflow เชื่อมต่อเข้าด้วยกันอย่างถูกต้อง

สำหรับปัญหานี้เพียงแค่ไม่รวมไฟล์ฟีเจอร์จากโครงการจากนั้นรวมไฟล์เหล่านั้นอีกครั้งให้บังคับ VS ให้สร้างไฟล์โค้ดbehindที่สร้างขึ้นใหม่โดยอัตโนมัติ

หลังจากนั้นฉันสามารถดูการทดสอบใน explorer การทดสอบ


1

ฉันมีปัญหานี้เมื่ออัพเกรดโซลูชันจาก Microsoft Visual Studio 2012 Express สำหรับเว็บเป็น Microsoft Visual Studio 2013

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

    Failed to initialize client proxy: 
    could not connect to vstest.discoveryengine.x86.exe

ฉันยังสังเกตเห็นว่าในการดีบักการทดสอบมันได้เปิดตัวอินสแตนซ์ของ Visual Studio 2012 นี่ทำให้ฉันรู้ว่าโครงการทดสอบหน่วยยังคงอ้างอิง 2012 ดูที่การอ้างอิงโครงการทดสอบฉันรู้ว่ามันเป็นการกำหนดเป้าหมายที่ผิด Microsoft Visual Studio Unit Test Framework DLL สำหรับ Visual Studio รุ่นนี้:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

ฉันเปลี่ยนหมายเลขรุ่นจาก 11.0 เป็น 12.0:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

ฉันสร้างขึ้นมาใหม่ทั้งหมดและสิ่งนี้ได้แก้ไขปัญหา - การทดสอบทั้งหมดถูกพบใน Test Explorer และตอนนี้การทดสอบทั้งหมดจะพบและทำงานได้อย่างสมบูรณ์


1

ตรวจสอบว่าโปรเจ็กต์ทดสอบของคุณไม่ได้ถูกตั้งค่าเป็นDelay Sign เฉพาะในคุณสมบัติโปรเจ็กต์ของคุณ -> Signing หากเป็นเช่นนั้นให้ยกเลิกการเลือกและทำการสร้างใหม่ทั้งหมด


หรือเพียงแค่ข้ามตรวจสอบลายเซ็นบนเครื่องของคุณโดยsn -Vr *,<public key token>เป็นผู้ดูแลในคำสั่งนักพัฒนา VS พรอมต์
สิลา

1

ฉันประสบปัญหาเดียวกันในขณะที่พยายามเปิดโซลูชันบนเครือข่ายที่ใช้ร่วมกันใน VS2013 Ultimate

ฉันแก้ไขปัญหาด้วยการเปิดเครื่อง

แผงควบคุม -> ตัวเลือกอินเทอร์เน็ต -> แท็บ "ความปลอดภัย" -> คลิก "Local Intranet" คลิกที่เว็บไซต์และตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมาย "เครือข่ายอินทราเน็ตตรวจจับอัตโนมัติ"


1

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


1

ตรวจสอบแอสเซมบลีที่อ้างอิงสำหรับแอสเซมบลีที่อาจมีการตั้งค่า "คัดลอกภายในเครื่อง" เป็น "เท็จ"

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


1

ดูเหมือนว่า NUnit Framework 2.6.4 ทำงานได้ไม่ดีกับ NUnit Test Adapter ในเว็บไซต์ระบุว่าอะแดปเตอร์ทดสอบจะทำงานกับ NUnit Framework 2.6.3 เท่านั้น

นี่เป็นปัญหาของฉัน: 1. ฉันได้ดาวน์โหลด NUnit และ NUnit Test Adapter แยกต่างหากผ่าน Nuget ใน VS2012 ยังไงก็ตาม NUnit ได้รับการอัปเดตเป็น 2.6.4 ทันใดนั้นฉันไม่เห็นรายการทดสอบของฉัน

การแก้ไข:

  1. ถอนการติดตั้ง Nuget และ Nuget Test adapter

    ไปที่เครื่องมือ> Nuget> Nuget Pkg manager> Manage Nuget Pkg สำหรับโซลูชัน

    ข รายการแพคเกจที่ติดตั้ง

    ค. คลิกจัดการ

    d ยกเลิกการตรวจสอบโครงการของคุณ

  2. ติดตั้ง NUnit Test Adapter รวมถึง NUnit 2.6.3 Framework

  3. ทำความสะอาด / สร้างโซลูชันใหม่

  4. เปิดการทดสอบ> ทดสอบ Explorer> เรียกใช้ทั้งหมด

ฉันเห็นกรณีทดสอบทั้งหมด

หวังว่านี่จะช่วยได้


1

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


1

ฉันมีปัญหาเดียวกัน แต่แตกต่างกันเล็กน้อย

ฉันใช้ visual studio 2012 ด้วยเหตุผลบางอย่างมีเพียงการทดสอบไฟล์ที่สร้างครั้งแรกเท่านั้นที่ทำงาน แต่การทดสอบในไฟล์อื่นไม่ได้ทำงานอยู่ พยายามแก้ไขปัญหาที่แตกต่างกันโพสต์ที่นี่ไม่ทำงาน

ในที่สุดฉันก็พบว่าฉันมีวิธีการส่วนตัวในชั้นทดสอบซึ่งเป็นวิธีแรกในชั้นเรียน ฉันเพิ่งย้ายวิธีส่วนตัวหลังจากวิธีทดสอบ ดังนั้นตอนนี้วิธีการที่มี[TestMethod]คุณลักษณะเป็นครั้งแรกวิธีในชั้นเรียน แปลก แต่ตอนนี้มันได้ผล

หวังว่าสิ่งนี้จะช่วยให้ใครซักคน


1

การทดสอบไม่ชอบวิธีการซิงค์ เช่น:

    [TestMethod]
    public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();

    }

หลังจากทำสิ่งนี้:

    [TestMethod]
    public void TestAuth()
    {
        TestMethod1();
    }

    public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();

    }

มันเห็นการทดสอบ


คำตอบที่ดีกว่าคือ[Test] public void XamarinExampleTest() { // This workaround is necessary on Xamarin, // which doesn't support async unit test methods. Task.Run(async () => { // Actual test code here. }).GetAwaiter().GetResult(); }
Robert Green MBA

3
"การทดสอบไม่ชอบasyncวิธีการ"เป็นเท็จ "การทดสอบไม่ชอบเป็นโมฆะ asyncวิธีการ"เป็นจริงและการแก้ปัญหาเป็นเพียงการประกาศวิธีการทดสอบเป็นasync งาน
Massimiliano Kraus

1

การเพิ่มคำตอบของฉันเนื่องจากนี่คือผลลัพธ์อันดับต้น ๆ ของ Google สำหรับสิ่งนี้

ฉันใช้ Visual Studio 2015 และ (ไม่รู้ - ฉันเพิ่งวิ่งInstall-Package NUnit) ติดตั้งแพคเกจ NUnit3 NuGet ในโครงการทดสอบของฉัน ฉันได้ติดตั้งส่วนขยาย NUnit Test Adapter แล้วและการทดสอบของฉันยังไม่ปรากฏขึ้น

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

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