16

これに似た投稿が見つからなかったので、これが重複していないことを願っています。

Visual Studio 2012 で単体テストを実行しようとしている ac# クラス ライブラリがあります。新しい単体テスト プロジェクトをソリューションに追加し、メイン プロジェクトを参照として追加しました。単体テスト プロジェクトをスタートアップ プロジェクトとして設定しました。デバッグしようとすると、エラー メッセージが表示されます

出力タイプがクラス ライブラリのプロジェクトを直接開始することはできません。

このプロジェクトをデバッグするには、ライブラリ プロジェクトを参照する実行可能プロジェクトをこのソリューションに追加します。実行可能プロジェクトをスタートアップ プロジェクトとして設定します。

ここに画像の説明を入力

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 で 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 に答える