3

クラスプロジェクトの単純なコードを単体テストしようとしていますが、テストを実行しようとするたびに、home.exe とメインの静的メインメソッドがないというエラーが発生します。ただし、まだこれらのいずれかが必要な段階には達していないため、これらを使用せずにテストを実行するにはどうすればよいでしょうか?

私のコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Home
{
    class InventoryType
    {

        /// <summary>
        /// Selects the inventory type and returns the selected value
        /// </summary>
        public class InventorySelect
        {
            private string inventoryTypes;
            public String InventoryTypes
            {
                set
                {
                    inventoryTypes = value;
                }

                get
                {
                    return inventoryTypes;
                }
            }


            /// <summary>
            /// Validate that the inventory is returning some sort of value
            /// </summary>
            /// <returns></returns>
            public bool Validate()
            {
                if (InventoryTypes == null) return false;
                return true;
            }
        }
    }
}

私のテストコード

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Home.InventoryType.InventorySelect;

namespace HomeTest
{
    [TestClass]
    public class TestInventoryTypeCase
    {
        [TestMethod]
        public void TestInventoryTypeClass()
        {
            InventorySelect select = new InventorySelect();
            select.inventoryTypes = "Collection";

            if (Validate() = true)
                Console.WriteLine("Test Passed");
            else
                if (Validate() = false)
                    Console.WriteLine("Test Returned False");
                else
                    Console.WriteLine("Test Failed To Run");

            Console.ReadLine();

        }
    }
}
4

2 に答える 2

3

OK、ここでいくつかのこと。

  1. メイン プロジェクト (テスト対象のプロジェクト) の出力タイプが ClassLibrary であることを確認します。
  2. テストでアサーションを使用する

ExampleLibrary という ClassLibrary ソリューションを作成しました。InventoryType というクラスを作成し、コードにコピーします。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ExampleLibrary
{
    class InventoryType 
    { 

        /// <summary> 
        /// Selects the inventory type and returns the selected value 
        /// </summary> 
        public class InventorySelect 
        { 
            private string inventoryTypes; 
            public String InventoryTypes 
            { 
                set 
                { 
                    inventoryTypes = value; 
                } 

                get 
                { 
                    return inventoryTypes; 
                } 
            } 


            /// <summary> 
            /// Validate that the inventory is returning some sort of value 
            /// </summary> 
            /// <returns></returns> 
            public bool Validate() 
            { 
                if (InventoryTypes == null) return false; 
                return true; 
            } 
        } 
    }
}

次に、単体テストを作成し、次のようにコーディングしました。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using ExampleLibrary;

namespace HomeTest
{
    [TestClass]
    public class TestInventoryTypeCase
    {
        [TestMethod]
        public void TestInventoryTypeClass()
        {
            InventoryType.InventorySelect select = new InventoryType.InventorySelect();
            select.InventoryTypes = "Collection";

            Assert.IsTrue(select.Validate());
            select.InventoryTypes = null;
            Assert.IsFalse(select.Validate());
        }
    }
}

上記のようにテストをコンパイルして実行すると、実行され、Test Passed が返されます。

于 2012-09-09T17:53:55.370 に答える
0

Visual Studio の上部にあるメイン メニュー バーでテストを実行するには... テスト - Windows - テスト エクスプローラー

[テスト エクスプローラー] ウィンドウで、実行するテストを選択し、ウィンドウの上部にある実行アイコンをクリックします。

于 2012-09-09T17:07:58.150 に答える