Не удается отладить проект модульного тестирования в Visual Studio 2012

Я не мог найти сообщение, подобное этому, поэтому я надеюсь, что это не дубликат.

У меня есть библиотека классов С#, в которой я пытаюсь выполнить модульные тесты в Visual Studio 2012. Я добавил новый проект Unit Test к моему решению и добавил свой основной проект в качестве ссылки. Я установил проект Unit Test как проект запуска. Когда я пытаюсь отлаживать, я получаю сообщение об ошибке

Невозможно запустить проект с типом выходного класса библиотеки классов.

Чтобы отладить этот проект, добавьте исполняемый проект в это решение, которое ссылается на проект библиотеки. Задайте исполняемый проект как проект запуска.

введите описание изображения здесь

Согласно пошаговому руководству в msdn, он должен запускать тесты, когда я удаляю debug. Есть предположения? Вот мой код Unit Test:

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'|;:',[email protected]#$%^&*()");
            Assert.AreEqual("longHandle-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789'|;:',[email protected]#$%^&*()", 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
        //}
    }
}

Ответы

Ответ 1

Вы захотите отладить его по-другому:

enter image description here

Ответ 2

Убедитесь, что вы использовали шаблон "unit test project" при создании проекта визуальной студии, который содержит ваш тест. 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 > Windows > Test Explorer).