像类型一样使用的方法 - 单元测试中的错误

时间:2012-09-24 15:33:01

标签: c# factory

我正在尝试对一个简单的工厂进行单元测试,但它一直告诉我我正在尝试使用类似的方法。发生了什么事?

我的单元测试:

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

namespace HomeTest
{
    [TestClass]
    public class TestFactory
    {
        [TestMethod]
        public void DoTestFactory()
        {
            InventoryType.InventorySelect select = new InventoryType.InventorySelect();
            select.inventoryTypes.Add("cds");

            Home.Services.Factory.CreateInventory get = new Home.Services.Factory.CreateInventory();
            get.InventoryImpl();

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

            Console.ReadLine();

        }
    }
}

我的工厂:

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

namespace Home.Services
{
    public class Factory
    {
        public InventorySvc CreateInventory()
        {
            return new InventoryImpl();
        }

    }
}

3 个答案:

答案 0 :(得分:1)

您正在尝试创建一个正在调用的方法的实例,然后调用它正在调用的方法。而是创建工厂,然后拨打CreateInventory

var factory = new Home.Services.Factory();
var inventory = factory.CreateInventory();
  • 我倾向于避免使用selectget作为变量名称,因为它们在其他地方使用时是关键字。

答案 1 :(得分:1)

CreateInventory()Factory类的方法。

你正试图new它 - 这是不可能的。

var get = new Home.Services.Factory();
var inventory = get.CreateInventory();

答案 2 :(得分:1)

你可以像你想要的那样在一行中完成。你刚刚在课程名称后面遗漏了()。变化:

new InventoryType.InventorySelect();

new InventoryType().InventorySelect();