web-dev-qa-db-ja.com

ユニットテストでのコードのステップ実行とデバッグ

単体テストをデバッグまたはステップスルーできませんでした。

これが私のサンプルテストコードです...

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using DomainModel.Entities;
using DomainModel.Abstract;
using WebUI.Controllers;

namespace Tests
{
    [TestClass]
    public class PeopleControllerTests
    {

        static IPeopleRepository MockPeopleRepository(params Person[] people)
        {
            var mockPeopleRepos = new Moq.Mock<IPeopleRepository>();
            mockPeopleRepos.Setup(x => x.People).Returns(people.AsQueryable());
            return mockPeopleRepos.Object;
        }

        [TestMethod]

        public void Count_Of_People()
        {
            IPeopleRepository repository = MockPeopleRepository(
                new Person { Age = 31, Gender = "Male", Name = "Tom" },
                new Person { Age = 25, Gender = "Female", Name = "Sally" },
                new Person { Age = 18, Gender = "Female", Name = "John" }
                );

            PeopleController controller = new PeopleController(repository);
            var people = controller.List().ViewData.Model;
            var peoplelist = people as IList<Person>;
            Assert.AreEqual(3, peoplelist.Count);
        }

    }
}
46

Microsoft.VisualStudio.TestTools.UnitTestingを使用する場合、VS 2010のメインメニューの[テスト]に移動し、[デバッグ]-> [現在のコンテキストでテスト]サブメニューをクリックします。

テストコードを右クリックして[テストの実行]を選択すると、mode = debugの場合でもデバッガーが起動しません。

84
John

VS 2013では、テストエクスプローラーでデバッグするテストを選択し、右クリックして、選択したテストのデバッグを選択します。

enter image description here

20
Mohamed Selim

はい、できます、ありがとう:)

実際にそれらを破るには、デバッグモードでユニットテストを実行する必要があります。

12
Grzenio

たぶん、テストをデバッグしてブレークポイントを設定することは、ある種の単体テストでは機能しますが、デバッグする場合は機能しません。ウェブサービス。

Webサービスをデバッグするには(ユニットテスト内で中断)、次のコードを挿入する必要があります。

System.Diagnostics.Debugger.Break();

これにより、アプリケーションの動作が停止したことを示すポップアップが表示され、デバッグを選択できます。

詳細: http://msdn.Microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini

4
Nux

別の解決策...

デバッガーを実行して接続する必要があります

この行をテストで実行された最初の行に設定します(おそらくテストクラスコンストラクターで)

System.Diagnostics.Debugger.Launch();

その後、デバッグウィンドウが開いたときに、ビジュアルstdioを選択しました

4
Arfilon

nunitを実行している場合、それはとても簡単でした:

  1. nunitを実行し、目的のアセンブリを開きます。
  2. Visual Studioを開く->デバッグ->プロセスにアタッチ...
  3. nunitのプロセスを選択
  4. 必要な各行にブレークポイントを置きます。
  5. nunitに戻ってテストを実行します
  6. ブレークポイントで実行が停止することがわかります
4
Afshar Mohebbi

1つのオプションは、 TestDriven.net をインストールすることです。これにより、主要な単体テスト.netフレームワーク(nunit、xunit、VSツールなど)で単体テストを簡単に実行できます。インストールしたら、関数を右クリックして、[テスト]-> [デバッガー]を選択できます。

0
bkaid