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

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

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

Проект с типом вывода библиотеки классов нельзя запустить напрямую.

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

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

Согласно пошаговому руководству на 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 изменить: видимо, я не могу публиковать изображения. Когда я нажимаю «Выполнить тесты», я получаю сообщение об успешной сборке в нижней строке состояния и больше ничего. - 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
Я понял свою проблему, мой метод был асинхронным недействительным, но он должен быть асинхронной задачей, чтобы он был допустимым методом тестирования. - 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. Если он по-прежнему не работает, щелкните правой кнопкой мыши тест и выберите «Выполнить тесты» или используйте обозреватель тестов (Тест > Windows > Обозреватель тестов).

person Kenn    schedule 11.12.2012