Ответ 1
Вы захотите отладить его по-другому:
Я не мог найти сообщение, подобное этому, поэтому я надеюсь, что это не дубликат.
У меня есть библиотека классов С#, в которой я пытаюсь выполнить модульные тесты в 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
//}
}
}
Вы захотите отладить его по-другому:
Убедитесь, что вы использовали шаблон "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).