ไม่สามารถตรวจแก้จุดบกพร่องโครงการทดสอบหน่วยใน Visual Studio 2012

ฉันไม่พบโพสต์ที่คล้ายกัน ดังนั้นฉันหวังว่านี่จะไม่ซ้ำกัน

ฉันมีไลบรารีคลาส c # ที่ฉันพยายามเรียกใช้การทดสอบหน่วยใน Visual Studio 2012 ฉันได้เพิ่มโครงการทดสอบหน่วยใหม่ลงในโซลูชันของฉัน และเพิ่มโครงการหลักของฉันเป็นข้อมูลอ้างอิงที่นั่น ฉันได้ตั้งค่าโครงการทดสอบหน่วยเป็นโครงการเริ่มต้น เมื่อฉันพยายามแก้ไขข้อบกพร่อง ฉันได้รับข้อความแสดงข้อผิดพลาด

โปรเจ็กต์ที่มีประเภทเอาต์พุตของไลบรารีคลาสไม่สามารถเริ่มได้โดยตรง

ในการดีบักโปรเจ็กต์นี้ ให้เพิ่มโปรเจ็กต์ที่ปฏิบัติการได้ให้กับโซลูชันนี้ซึ่งอ้างอิงถึงโปรเจ็กต์ไลบรารี ตั้งค่าโครงการปฏิบัติการเป็นโครงการเริ่มต้น

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Common;
using Messages;

namespace MessageUnitTests
{
    [TestClass]
    class RegistrationTester
    {
        [TestMethod]
        public void RegistrationRequest_TestConstructorsAndFactories()
        {
            RegistrationRequest rr1 = new RegistrationRequest("myhandle");
            Assert.AreEqual("myhandle", rr1.Handle);

            rr1 = new RegistrationRequest("longHandle-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789'|;:',.=-_+!@#$%^&*()");
            Assert.AreEqual("longHandle-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789'|;:',.=-_+!@#$%^&*()", rr1.Handle);

            rr1 = new RegistrationRequest("");
            Assert.AreEqual("", rr1.Handle);

            rr1 = new RegistrationRequest(null);
            Assert.AreEqual(null, rr1.Handle);

            rr1 = new RegistrationRequest("myhandle");
            ByteList bytes = new ByteList();
            rr1.Encode(bytes);

            RegistrationRequest rr2 = RegistrationRequest.Create(bytes);
            Assert.IsNotNull(rr2);
            Assert.AreEqual(rr1.IsARequest, rr2.IsARequest);
            Assert.AreEqual(rr1.MessageNr.ProcessId, rr2.MessageNr.ProcessId);
            Assert.AreEqual(rr1.MessageNr.SeqNumber, rr2.MessageNr.SeqNumber);
            Assert.AreEqual(rr1.ConversationId.ProcessId, rr2.ConversationId.ProcessId);
            Assert.AreEqual(rr1.ConversationId.SeqNumber, rr2.ConversationId.SeqNumber);
            Assert.AreEqual(rr1.RequestType, rr2.RequestType);
            Assert.AreEqual(rr1.SessionId, rr1.SessionId);
            Assert.AreEqual(rr1.Handle, rr2.Handle);
        }

        //[TestMethod]
        //public void RegistrationRequest_EncodingDecoding()
        //{
        //    Message m1 = new RegistrationRequest("myhandle");
        //    m1.MessageNr = MessageNumber.Create(10, 14);
        //    m1.ConversationId = MessageNumber.Create(10, 12);
        //    ByteList bytes = new ByteList
        //}
    }
}

person Matt    schedule 26.09.2012    source แหล่งที่มา


คำตอบ (2)


คุณจะต้องการดีบักด้วยวิธีอื่น:

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

person Gromer    schedule 26.09.2012
comment
ฉันเห็นตัวสำรวจการทดสอบ แต่มันไม่แสดงการทดสอบใดๆ เลย ฉันต้องทำอะไรอีกไหมเพื่อให้การทดสอบปรากฏในเครื่องมือสำรวจการทดสอบ - person Matt; 26.09.2012
comment
ฉันคงไม่คิดอย่างนั้น เนื่องจากคุณใช้เทมเพลตการทดสอบหน่วยเมื่อเพิ่มโปรเจ็กต์ แล้วถ้าคุณคลิกขวาในการทดสอบล่ะ? คุณได้รับตัวเลือกให้ทำการทดสอบที่เลือกหรือไม่ ฉันไม่ได้ใช้ VS2012 มากนัก ดังนั้นฉันจึงไม่คุ้นเคย 100% - person Gromer; 26.09.2012
comment
ไม่แน่นอน - นี่คือสิ่งที่ฉันเห็น i.imgur.com/cyAoa.png แก้ไข: เห็นได้ชัดว่าฉันโพสต์ภาพไม่สำเร็จ เมื่อฉันคลิกเรียกใช้การทดสอบ ฉันได้รับข้อความ Build Succeeded ที่แถบสถานะด้านล่างและไม่มีอะไรเพิ่มเติม - person Matt; 26.09.2012
comment
การคลิกนั้นทำให้ฉันได้รับผลลัพธ์เช่นเดียวกับ Run Tests นี่คือภาพที่แสดงให้เห็นนักสำรวจทดสอบจริงๆ เช่นกัน i.imgur.com/mmtX8.png - person Matt; 26.09.2012
comment
คลิกแท็บการทดสอบการทำงานที่ด้านล่าง - person Gromer; 26.09.2012
comment
แสดงให้เห็นโดยเปิดใช้งานหน้าต่างในเมนูมุมมองที่ดูมีแนวโน้ม ดูเหมือนจะไม่มีประโยชน์ในตอนนี้ i.imgur.com/9ZDiZ.png - person Matt; 26.09.2012
comment
ฉันติดตั้ง VS2010 และสร้างโปรเจ็กต์ขึ้นมาใหม่ เมื่อทำการดีบัก การทดสอบหน่วยจะทำงานและผ่าน เดาว่าฉันจะชอล์กถึง VS2012 ที่กำลังบั๊กในตอนนี้ ขอบคุณสำหรับความช่วยเหลือของคุณ! - person Matt; 26.09.2012
comment
ฉันประสบปัญหาเดียวกัน - การทดสอบไม่แสดงในรายการการทดสอบ - person Doguhan Uluca; 01.10.2012
comment
ฉันพบปัญหาของฉันแล้ว วิธีการของฉันคือ async void แต่ต้องเป็น async Task เพื่อให้เป็นวิธีทดสอบที่ถูกต้อง - person Doguhan Uluca; 01.10.2012
comment
บางคนควรทำเครื่องหมายคำตอบนี้เป็นคำตอบที่ถูกต้องสำหรับคำถามนี้ - person Eido95; 10.08.2016

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

คุณสามารถเพิ่มหรือยืนยันว่ามีอยู่โดยแก้ไขไฟล์ csproj ในแผ่นจดบันทึก:

<Project>
 <PropertyGroup>
  <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 </PropertyGroup>
</Project>

รายละเอียด @ http://onlinecoder.blogspot.ca/2009/09/visual-studio-projects-project-type.html

ตอนนี้ควรทำงานกับ F5 ใน Visual Studio ได้ หากยังคงใช้งานไม่ได้ ให้คลิกขวาที่การทดสอบแล้วคลิก 'รันการทดสอบ' หรือใช้ test explorer (Test > Windows > Test Explorer)

person Kenn    schedule 11.12.2012