3

试图对一个类项目的一些简单代码进行单元测试,但是每次我尝试运行测试时,我都会收到一个错误,即没有 home.exe 并且没有主要的静态 main 方法。但是,我们还没有达到我们应该拥有这些东西的地步,那么没有它们我该如何运行测试呢?

我的代码

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

好的,这里有几件事。

  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());
        }
    }
}

我如上所述编译并运行测试,它运行并返回测试通过。

于 2012-09-09T17:53:55.370 回答
0

要在 Visual Studio 顶部的主菜单栏上运行测试... 测试 - Windows - 测试资源管理器

在“测试资源管理器”窗口中,选择您要运行的测试,然后单击窗口顶部的运行图标。

于 2012-09-09T17:07:58.150 回答