16

我找不到类似的帖子,所以我希望这不是重复的。

我有 ac# 类库,我正在尝试在 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
        //}
    }
}
4

2 回答 2

24

您需要以不同的方式对其进行调试:

在此处输入图像描述

于 2012-09-26T03:13:51.073 回答
0

确保在创建包含测试的 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

现在它应该可以在 Visual Studio 中使用 F5 了。如果它仍然不起作用,请右键单击测试并单击“运行测试”或使用测试资源管理器(测试 > Windows > 测试资源管理器)

于 2012-12-11T21:22:23.043 回答